繁体   English   中英

Java中具有继承类的静态数组

[英]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 ,也是一个非常糟糕的主意。

这是不可能的,因为我们使用= (等于)来表示左右手边相同。在这里,您将数组分配给非数组变量。

  1. 没有通用数组。 您不能创建一个Class数组
  2. 类不是Class的子类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM