LHS 上的 Java 泛型,而不是赋值的 RHS

use*_*652 2 java generics

我遇到了以下代码,想知道这是否是好的做法:

LinkedList<String> ll = new LinkedList(); 
Run Code Online (Sandbox Code Playgroud)

我会写

List<String> l = new LinkedList<String> (); 
Run Code Online (Sandbox Code Playgroud)

所以这里有两个问题:

  1. 我一直认为使用类型List而不是ArrayList/LinkedList
  2. 如果省略赋值运算符 RHS 上的菱形,究竟会发生什么?

dur*_*597 5

  1. 始终编​​程到接口,这样您的代码就保持独立于实现。
  2. 您正在创建原始类型,这会给您一个警告,但它会编译。“LinkedList 是原始类型。对泛型类型 LinkedList 的引用应该被参数化”。由于擦除,这实际上并不重要。