0

スーパークラスから継承するクラスファイルの静的で直接埋められた配列に少し問題があります

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

不可能のようです。Intellij によると、ChildClass.class の代わりに Superclass.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
    ));

変更可能な statics は、そうでない場合でもpublic、本当に悪い考えです。

于 2013-06-28T14:18:48.200 に答える
0

=左辺と右辺が同じであると言うために (equal)を使用しているため、これは不可能です。ここでは、配列を非配列変数に割り当てています。

于 2013-06-28T14:20:43.757 に答える