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
ArrayList
是一个类,它是列表的实现 列表是一个类,因此不能实例化它,因为asArrayList
是一个类,它是列表的一个实现 列表不能实例化,因为它只是一个接口
但是,您可能还有另一个问题
你真的有一门叫做“E”的课吗?如果你这样做了,那么,你不应该没有很好的理由
像E和T这样的单个字母基本上只用于表示泛型类型参数。可以这样理解:“这是关于如何创建类或方法的一般性描述,不需要任何特定类型的引用-您可以通过任何合法引用类型来参数化此类”
所以即使像ArrayList这样的类也不能被实例化——因为它们是类的通用“配方”,而不是真正的具体类。列表不能被实例化,因为它只是一个接口 但是,您可能还有另一个问题 你真的有一门叫做“E”的课吗?如果你这样做了,那么,你不应该没有很好的理由 像E和T这样的单个字母基本上只用于表示泛型类型参数。可以这样理解:“这是关于如何创建类或方法的一般性描述,不需要任何特定类型的引用-您可以通过任何合法引用类型来参数化此类”
因此,即使像ArrayList
这样的类也无法实例化,因为它们是类的通用“配方”,不是真正的具体类。大概你的上下文无关链接应该引起注意,所以吃了ArrayList-parameterized-by-T周围的尖括号。大概你的上下文无关链接应该引起注意,所以吃了ArrayList-parameterized-by-T周围的尖括号。
List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();