3

クラスローダーを使用してクラスをロードしているClass<?>ので、クラスを別のメソッドまたは関数に渡しますClass<? extends SomeClass>

今私がキャストしようとすると:

Class<?> clazzFromClassLoader = Class.forName(nameOfClass);
Class<? extends Someclass> clazz = (Class<? extends SomeClass>)clazzFromClassLoader;
//second line gives unchecked cast warning

を使用してクラスキャスト例外がないことを確認できます

SomeClass.isAssignableFrom(clazzFromClassLoader);

しかし、チェックされていないキャストを取り除く方法はありますか?

4

1 に答える 1

10

はい:あなたは書くことができます:

Class<? extends Someclass> clazz =
    clazzFromClassLoader.asSubclass(Someclass.class);

(詳細については、asSubclassのJavadocを参照してください。)

于 2013-02-19T14:19:26.170 に答える