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 回答