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

赋值的LHS上的Java泛型,而不是RHS上的Java泛型,java,generics,Java,Generics,我遇到了以下代码,并想知道这是否是一种良好的做法: LinkedList<String> ll = new LinkedList(); LinkedList ll=new LinkedList(); 我会写信的 List<String> l = new LinkedList<String> (); listl=newlinkedlist(); 这里有两个问题: 我一直认为使用类型List而不是ArrayList/LinkedList是一种很好的做法

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

LinkedList<String> ll = new LinkedList(); 
LinkedList ll=new LinkedList();
我会写信的

List<String> l = new LinkedList<String> (); 
listl=newlinkedlist();
这里有两个问题:

  • 我一直认为使用类型
    List
    而不是
    ArrayList
    /
    LinkedList
    是一种很好的做法
  • 如果省略赋值运算符RHS上的菱形,会发生什么情况
  • ,这样您的代码保持独立于实现
  • 您正在创建原始类型,这将给您一个警告,但它将编译。“LinkedList是原始类型。对泛型类型LinkedList的引用应参数化”。实际上,由于擦除,这并不重要

  • “这实际上无关紧要”——当然,除非构造函数接受省略的泛型类型的参数。不,永远不要忽略它,这就是它给出警告的原因。