我有一个静态的,直接填充的类文件数组的问题,它继承自超类
public static Class<SuperClass> classes= new Class<SuperClass>[]{
ChildClass.class
}
似乎是不可能的。 Intellij说,它需要Superclass.class而不是ChildClass.class。
为什么这不可能?谢谢
答案 0 :(得分:1)
阵列和泛型不混合。
此类型Xx<Derived>
也不能分配给Xx<Base>
(请参阅本网站上的大量问题)。
您可能需要:
private static final Class<? extends SuperClass> clazz = ChildClass.class;
相反:
private static final Class<? super ChildClass> clazz = SuperClass.class;
或使用合适的集合:
private static final Set<? extends SuperClass> classes =
unmodifiableSet(singleton(
ChildClass.class
));
即使不是public
,可变静力也是一个非常糟糕的主意。
答案 1 :(得分:0)
这是不可能的,因为我们使用=
(相等)来说左右两边相同。
在这里,您将数组分配给非数组变量。
答案 2 :(得分:0)