0

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

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

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

为什么这是不可能的?谢谢

4

3 回答 3

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

于 2013-06-28T14:18:48.200 回答
0
  1. 没有通用数组。你不能创建一个类数组
  2. 类不是类的子类
于 2013-06-28T14:24:52.190 回答
0

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

于 2013-06-28T14:20:43.757 回答