在创建实例时指定集合元素类型

Viv*_*ani 3 java collections list arraylist java-7

以下声明之间是否有任何区别 -

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

List<String> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

无论如何,在这两种情况下,list都只包含String类型的元素.

Viv*_*ath 5

没有区别.但是,第一个在Java <= 7中是合法的,而第二个在Java 7中是合法的,并且作为简写符号*引入.编译器将从声明中推断出泛型类型.

*它基本上是为了删除冗余信息并减少代码噪声而引入的.所以你现在有:

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

与:

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

第一个在眼睛上更容易.