我有几个类定义如下:
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?
进行投射时,为什么第一个选项有效?答案 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
),因此您必须实现实现。
由于