我正在使用classloader加载一个类,它返回我Class<?>,现在我想将类传递给另一个方法或函数Class<? extends SomeClass>.
现在,当我尝试施放时:
Class<?> clazzFromClassLoader = Class.forName(nameOfClass);
Class<? extends Someclass> clazz = (Class<? extends SomeClass>)clazzFromClassLoader;
//second line gives unchecked cast warning
Run Code Online (Sandbox Code Playgroud)
我可以通过使用确保没有类强制转换异常
SomeClass.isAssignableFrom(clazzFromClassLoader);
Run Code Online (Sandbox Code Playgroud)
但有没有办法摆脱未经检查的演员表?
是的:你可以写:
Class<? extends Someclass> clazz =
clazzFromClassLoader.asSubclass(Someclass.class);
Run Code Online (Sandbox Code Playgroud)
(有关更多信息,请参阅asSubclassJavadoc.)
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |