Java HashMap是否有类型?

Gur*_*urt 7 java hashmap

HashMap的声明是否应始终包含类型,例如

private HashMap<String, String> test = new HashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)

因为我看到很多书中的例子<String, String>被遗漏了,所以我们只有:

private Map test= new HashMap();
Run Code Online (Sandbox Code Playgroud)

哪一个'正确'?

hvg*_*des 11

它应该看起来像

private Map<String, String> test = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

因此,两者的元素都是正确的.;)Map是定义行为的接口,而HashMap是一个提供行为的实现.

如果您想要更强的类型安全性,则应使用泛型参数.虽然它们不是绝对必要的,但它们在减少应用程序错误方面增加了很多价值.由于在Java 5中引入了泛型,因此之前的示例将不会显示泛型参数.

"钻石操作符" <>与Java 7的推出-这意味着你可以在泛型类型说明符的第二次出现减少,只是<>.


Kal*_*see 7

从Java 5开始,最好的选择是使用带有<>括号的泛型.这可以让您知道Map用于键和值的类型,并执行一些编译时检查以防止添加不正确的类型.它还可以使您不必在get从地图中将值转换为正确的类型.

如果要允许键和值的所有类,可以使用<?, ?>泛型声明.但是,在通用类型上根据需要进行定制几乎总是最好的.

此外,它可以规避通用检查,但它们肯定比什么都好.