Java 列表与阵列列表 List listeners=newlist();

Java 列表与阵列列表 List listeners=newlist();,java,generics,Java,Generics,为什么上面这一行失败了: 无法实例化类型列表 但这一条有效: List<EventHandler<E>> listeners = new List<EventHandler<E>>(); ArrayList侦听器=新建ArrayList(); 是一个接口,不能实例化接口。是一个接口,不能实例化接口。列表是一个接口,不能创建接口实例 试一试 List listeners=new ArrayList(); 列表是一个接口,您不能创建接口的实例 试一试

为什么上面这一行失败了:

无法实例化类型
列表

但这一条有效:

List<EventHandler<E>> listeners = new List<EventHandler<E>>();
ArrayList侦听器=新建ArrayList();

是一个接口,不能实例化接口。

是一个接口,不能实例化接口。

列表是一个接口,不能创建接口实例

试一试

List listeners=new ArrayList();

列表是一个接口,您不能创建接口的实例

试一试

List listeners=new ArrayList();

列表只是一个由ArrayList实现的接口


请参阅:

列表只是一个由ArrayList实现的接口

请参阅:

正确的方法是:

List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();
List listeners=new ArrayList();
  • 通过接口引用对象(
    列表
  • 用对象的具体类型(
    ArrayList
    )实例化对象(无法实例化接口)
    • 正确的方法是:

      List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();
      
      List listeners=new ArrayList();
      
      • 通过接口引用对象(
        列表
      • 用对象的具体类型(
        ArrayList
        )实例化对象(无法实例化接口)

      列表是一个类,因此不能实例化它,因为as
      ArrayList
      是一个类,它是列表的实现

      列表是一个类,因此不能实例化它,因为as
      ArrayList
      是一个类,它是列表的一个实现

      列表不能实例化,因为它只是一个接口

      但是,您可能还有另一个问题

      你真的有一门叫做“E”的课吗?如果你这样做了,那么,你不应该没有很好的理由

      像E和T这样的单个字母基本上只用于表示泛型类型参数。可以这样理解:“这是关于如何创建类或方法的一般性描述,不需要任何特定类型的引用-您可以通过任何合法引用类型来参数化此类”


      所以即使像ArrayList这样的类也不能被实例化——因为它们是类的通用“配方”,而不是真正的具体类。

      列表不能被实例化,因为它只是一个接口

      但是,您可能还有另一个问题

      你真的有一门叫做“E”的课吗?如果你这样做了,那么,你不应该没有很好的理由

      像E和T这样的单个字母基本上只用于表示泛型类型参数。可以这样理解:“这是关于如何创建类或方法的一般性描述,不需要任何特定类型的引用-您可以通过任何合法引用类型来参数化此类”


      因此,即使像ArrayList
      这样的类也无法实例化,因为它们是类的通用“配方”,不是真正的具体类。

      大概你的上下文无关链接应该引起注意,所以吃了ArrayList-parameterized-by-T周围的尖括号。大概你的上下文无关链接应该引起注意,所以吃了ArrayList-parameterized-by-T周围的尖括号。
      List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();