Java中的List 类型是一种Interface 类型,而不是Class 类型。
如果你试图创建一个List 类型的实例,Java将抛出一个错误,如下所示:
List myList = new List();
// ERROR: 'List' is abstract; cannot be instantiated
这是因为Java中所有的Interface 类型都是抽象引用,用于将相关的方法和变量组合在一起。
当你需要创建一个List 类型的实例时,你需要从一个实现该类型的类中实例化。
在Java中,有几个类实现了List 类型它们是:
ArrayListLinkedListStackVectorCopyOnWriteArrayList
下面是一个如何创建一个List 类型实例的例子。请注意,你可以使用任何实现List 接口的类来实例化该对象:
List myList = new ArrayList();
List secondList = new LinkedList();
List thirdList = new Stack();
实现List 类型的类是参数化类型类。
这些类允许你为从它们创建的实例指定类型参数。
例如,你可以创建一个List ,只存储String 的值:
List<String> myList = new ArrayList();
myList.add("Nathan");
myList.add("Hello");
如果没有像上面的例子那样使用<String> 来指定类型参数,那么这个实例可以存储任何类型的值:
List myList = new ArrayList();
myList.add(1);
myList.add("String");
myList.add(true);
在Java中,初始化一个实例而不指定其类型被称为原始类型实例化。
一般来说,不建议创建原始类型实例,因为你会失去这些实例的类型安全特性。
最好是用一个明确的类型来定义一个List ,比如说List<Integer> 或List<String> 。
这就是你如何在Java中实例化一个List 类型实例😉