List<EventHandler<E>> listeners = new List<EventHandler<E>>();
为什么上面的行失败了:
无法实例化类型
List<EventHandler<E>>
但是这个有效:
ArrayList<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();
答案 0 :(得分:28)
正确的方法是:
List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();
List
)ArrayList
)实例化对象(接口无法实例化)答案 1 :(得分:15)
List
是一个接口,您无法实例化接口。
答案 2 :(得分:6)
列表是一个接口,您无法创建接口的实例
试
List<EventHandler<E>> listeners = new ArrayList<EventHandler<E>>();
答案 3 :(得分:2)
答案 4 :(得分:1)
List只是一个由ArrayList
实现的接口请参阅:http://download.oracle.com/javase/6/docs/api/java/util/List.html
答案 5 :(得分:1)
列表无法实例化,因为它只是一个接口。
但是,您可能还有其他问题。
你真的有一个名为'E'的班级吗?如果你这样做,那么你应该没有充分的理由。
E和T等单个字母几乎专门用于表示泛型类型参数。阅读它:“这是关于如何创建类或方法的一般描述,没有任何特定类型的引用 - 您可以通过任何合法的引用类型参数化该类”。
所以即使像ArrayList <
T >
这样的类也无法实例化 - 因为它们是类的通用“配方”,而不是真正的具体类。