【问题标题】:Parameterized Upper Bounded Generic Class from String?来自字符串的参数化上限泛型类?
【发布时间】:2016-02-03 07:41:39
【问题描述】:
我看过这两个答案:
我真正想做的是:
final Class<? extends Xyz<?>> clazz = Class.forName(name).asSubclass(Xyz<?>.class);
但 Xyz<?>.class 不是有效的 Java。有没有我应该使用的魔法咒语?
【问题讨论】:
标签:
java
generics
parameterization
【解决方案1】:
我不太确定我是否理解您的问题。
如果您的意思是您的代码行没有编译,您可以通过强制转换来修复它,如下例所示:
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
}
}
如何避免“未经检查”-cast 的警告,例如,您可以在此处阅读:
How do I address unchecked cast warnings?
【解决方案2】:
Class<? extends Xyz<?>> 仅在 Xyz 本身是泛型类型时才有意义。