在Java中继承类的静态数组

时间:2013-06-28 14:14:47

标签: java arrays inheritance static

我有一个静态的,直接填充的类文件数组的问题,它继承自超类

 public static Class<SuperClass> classes= new Class<SuperClass>[]{
    ChildClass.class
}

似乎是不可能的。 Intellij说,它需要Superclass.class而不是ChildClass.class。

为什么这不可能?谢谢

3 个答案:

答案 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)

  1. 没有通用数组。您无法创建Class
  2. 数组
  3. Class不是Class
  4. 的子类