1) Nếu bản đồ có thể không thay đổi:
Collections.emptyMap();
// or, in some cases:
Collections.<String, String>emptyMap();
Bạn sẽ phải sử dụng sau này đôi khi trình biên dịch không thể tự động tìm ra loại bản đồ nào cần thiết (điều này được gọi là type inference). Ví dụ, hãy xem xét một phương pháp tuyên bố như thế này:
public void foobar(Map<String, String> map){ ... }
Khi đi qua các Map trống trực tiếp với nó, bạn phải rõ ràng về loại:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Nếu bạn cần có thể sửa đổi bản đồ, sau đó ví dụ:
new HashMap<String, String>();
(như tehblanx pointed out)
Phụ Lục: nếu dự án của bạn sử dụng Guava, bạn có những lựa chọn sau:
1) Immutable bản đồ:
ImmutableMap.of();
// or:
ImmutableMap.<String, String>of();
Cấp, không có lợi ích lớn ở đây so với Collections.emptyMap()
. From the Javadoc:
bản đồ này hoạt động và thực hiện tương đối để Collections.emptyMap()
, và là một lợi thế chủ yếu để ổn định và bảo trì mã của bạn.
2) Bản đồ mà bạn có thể sửa đổi:
Maps.newHashMap();
// or:
Maps.<String, String>newHashMap();
Maps
chứa phương pháp nhà máy tương tự cho instantiating các loại bản đồ cũng như TreeMap
hoặc LinkedHashMap
.
Loại khai báo của bạn cho tệpParameters là gì? – jjnguy
Có thể bạn cũng sẽ nhận được một ClassCastException. –
tệpParameters phải là một Bản đồ chứ không phải là Bản đồ HashMap. –