Java HashMap初始化?

Java HashMap initialization?

我已经知道如何使用以下两种方式之一初始化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 标记

Type safety: The expression of type HashMap needs unchecked conversion to conform to HashMap

所以建议使用

new HashMap<String, Integer>(); 

但是根据 Sonar Linter

Replace the type specification in this constructor call with the diamond operator ("<>").

所以建议使用

new HashMap();

哪个最好?为什么?

使用 Java 7 钻石运算符:

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

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

参见:Type Inference for Generic Instance Creation