私の経験によると、クラスの定義E
では、コンパイル時にクラスの実際の名前をジェネリックの代わりに使用することはできません。E は Subtest から派生していますが、E はジェネリック型であり、Subtest はクラスです。したがって、この問題は特に によって引き起こされるのではなく、ジェネリック型の代わりにクラスが使用されているSubtest
ためです。
これはあなたの問題に直接関係していませんが、意味があるかもしれません:
//In a generic class, the compiler won't even allow you to instantiate
//E with new
//If you try to do this:
E obj1;
obj1 = new E();
//You will see the compiler error that E is a type parameter and a CLASS
//has to be used with new, not a type parameter
実際の object: をジェネリック型がまだ必要なMyStaticClass.aList
場所に配置しようとしています 。E
ジェネリック型でクラスを宣言したときはいつでも、ジェネリック型を持つと宣言されたそのクラスのメンバーの代わりに実際のクラス名を入れることができませんでした。私は常にパラメーター、変数、ETC を使用する必要がありました。そのクラスが定義した総称名 E を持つ。
Test
私の経験では、ジェネリック E に基づくクラスのメンバー変数に代入するには、 classでジェネリック E に直接関連付けられている変数を使用する必要がありますTest
。別のジェネリック クラスの別の "E" でさえ機能しません。他のジェネリック "E" は、Test クラスでジェネリックとして定義されているジェネリックと同じではないためです。