这段代码的含义。为什么List=LinkedList
List<String> list1 = new LinkedList<String>();
List<String> list2 = new LinkedList<String>();
因为List
是一个接口,它可以分配给任何实现类。LinkedList
实现List
,因此该分配是合法的。请参阅对接口进行编程。
您可以看到该语言的一个设计特性。
列表是一个通用的API,通过与其他类型区分开来
public interface List<T> ...
public int size();
public T get(int i);
其中,实现类被指定为:
public class LinkedList implements List ...
publlc class ArrrayList implements List ...
通过将一个变量声明为该"接口",您可以打开实现(例如,在将来进行更改,或使用另一个对象重新分配)。您不会过度指定变量)。
这也允许具有处理任何类型的List的函数。
void f(List list) { ... }
其他一些更简单的语言没有这种选择,只有一种List、一种Map和一种Set。通过允许程序员选择实现,给出了技术质量。比如选择一个汽车品牌而不是汽车。