[英]Static array with inheriting classes in Java
我有一个静态的,直接填充的类文件数组,它从超类继承而来,有一个小问题
public static Class<SuperClass> classes= new Class<SuperClass>[]{
ChildClass.class
}
似乎是不可能的。 Intellij说,它需要Superclass.class,而不是ChildClass.class。
为什么这不可能呢? 谢谢
数组和泛型不能混用。
同样,不能将类型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
,也是一个非常糟糕的主意。
这是不可能的,因为我们使用=
(等于)来表示左右手边相同。在这里,您将数组分配给非数组变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.