理解对象初始化中的泛型

Sal*_*Sal 4 java generics initialization object

我有一个关于Java中泛型的基本问题:地图的以下两个初始化之间有什么区别?

        Map<String, String> maplet1 = new HashMap<String, String>();

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

我理解第一个初始化是指定对象构造中的泛型,但我不理解这样做的潜在后果,而不是后一个对象构造(maplet2).在实践中,我总是看到代码使用了maplet1构造,但是我不明白在另一个上面做这件事有什么好处.

Rei*_*eus 5

第二个Map被分配给原始类型,并将导致编译器警告.您只需使用第一个版本即可消除警告.

有关更多信息,请参阅:什么是原始类型,为什么我们不应该使用它?