修复Java列表是抽象的不能被实例化的错误

322 阅读1分钟

Java中的List 类型是一种Interface 类型,而不是Class 类型。

如果你试图创建一个List 类型的实例,Java将抛出一个错误,如下所示:

List myList = new List();
// ERROR: 'List' is abstract; cannot be instantiated

这是因为Java中所有的Interface 类型都是抽象引用,用于将相关的方法和变量组合在一起。

当你需要创建一个List 类型的实例时,你需要从一个实现该类型的类中实例化。

在Java中,有几个类实现了List 类型它们是:

  • ArrayList
  • LinkedList
  • Stack
  • Vector
  • CopyOnWriteArrayList

下面是一个如何创建一个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 类型实例😉