创建扩展和实现的类列表

时间:2014-08-13 14:28:06

标签: java class interface extends implements

我有几个类定义如下:

class A extends Super implements Interface {}
class B extends Super implements Interface {}

我想创建这些类的列表。  我尝试以下方法:

public class C {

    List<Class<?>> classes = Arrays.asList((Class<?>) A.class, B.class); // Works
    List<Class<? extends Super,Interface>> classes2 = Arrays.asList(A.class, B.class); // Compile Error
    List<Class<? extends Super>> classes3 = Arrays.asList(A.class, B.class); // Compile Error

}

写它的正确方法是什么?当我仅向A?

进行投射时,为什么第一个选项有效?

1 个答案:

答案 0 :(得分:2)

第1行

它似乎是它的工作方式,但你可以这样做:

List<Class<?>> classes = new ArrayList<Class<?>>(Arrays.asList(A.class, B.class));

第2行

java: wrong number of type arguments; required 1

应为List<Class<? extends Super>>

第3行在我的IDE上正常

第4行(我)

List<Class<? extends Super>> classes4 = new ArrayList<Class<? extends Super>>(Arrays.asList(A.class, B.class));

-

Arrays.asList()仅返回AbstractList,并且在您使用它时失败(UnsupportedOperationException),因此您必须实现实现。

由于