私は、Javaリフレクション(つまり、Class.forName()
)を使用して、ユーザーの入力に基づいてクラスインスタンスを動的に作成するプログラムを作成しています。 1つの要件は、私のプログラムが作成するインスタンスは、それがSomeClass
と呼ばれる定義された特定のクラスIを拡張しなければならないということです。私の質問は:このクラス型を格納するために、私は束縛されたジェネリック、Class<? extends SomeClass>
、または単に無制限のジェネリック、Class
を使うべきですか?クラスが無制限のワイルドカードジェネリックを使用するための良い方法の1つであると言うJavaの書籍があることがわかりましたが、これがプログラムの状況に当てはまるかどうかは疑問です。Java Generics - クラスまたはクラス<? extends SomeClass>
私の質問が十分ではないか、いくつかの情報が必要であることがわかった場合は、私に知らせてください。
@Vulcanはい、それはどのようなOP指定されていないのです。彼は彼らに「SomeClass」を広げてほしい。 – wchargin
['asSubclass'](http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#asSubclass \(java.lang.Class \))を使用すると、 'isAssignableFrom'をチェックしてから例外をスローするのではなく)。 –
また、チェックされていないキャストの正当性はまだありません。あなたのヘルパーメソッドは 'SomeClass'を返すだけでジェネリックではないはずです。 –