Java HashMap初始化吗?

时间:2018-12-20 08:42:16

标签: java collections hashmap declaration sonarlint

我已经知道如何通过以下两种方式之一来初始化Java HashMap

// way 1: apply generic type saftey
HashMap<String, Integer> hashMap1 = new HashMap<String, Integer>();

// way 2: general without apply generic type saftey
HashMap<String, Integer> hashMap2 = new HashMap();

我的问题
最佳做法是

根据 Eclipse标记

  

类型安全:HashMap类型的表达式需要未经检查的转换   符合HashMap

enter image description here 因此,建议使用

new HashMap<String, Integer>(); 

但是根据 Sonar Linter

  

在此构造函数调用中将类型规范替换为   钻石运算符(“ <>”)。

enter image description here 因此,建议使用

new HashMap();

哪个是最好的?为什么?

1 个答案:

答案 0 :(得分:5)

使用Java 7 Diamond运算符:

HashMap<String, Integer> hashMap2 = new HashMap<>();

Diamond <>允许编译器隐式推断类型

请参阅:Type Inference for Generic Instance Creation