我已经看到了这两个答案:
final Class<? extends Xyz> result = resultClass.asSubclass(Xyz.class);
Class<T> clazz = (Class<T>) Class.forName(className).asSubclass(ifaceClass);
我实际上要做的是:
final Class<? extends Xyz<?>> clazz = Class.forName(name).asSubclass(Xyz<?>.class);
但是Xyz<?>.class
不是有效的Java。我应该使用一种神奇的咒语吗?
答案 0 :(得分:0)
我不太确定我是否理解你的问题。
如果您的意思是,您的代码行未编译,您可以通过执行强制转换来修复它,如下例所示:
package test;
public class Test<T> {
public static void main(String[] args) throws ClassNotFoundException {
@SuppressWarnings("unchecked")
final Class<? extends Test<?>> clazz = (Class<Test<?>>) Class.forName("test.Test").asSubclass(Test.class);
//... do something with the class
}
}
如何避免&#34;未经检查&#34; -cast的警告,您可以在此处阅读: How do I address unchecked cast warnings?
答案 1 :(得分:0)
Class<? extends Xyz<?>>
才有意义。