我有一个字符串com.bar.Baz
。我想获得Class<T>
,其中T是从字符串扩展接口com.bar.Foo
的任何东西。
这是我尝试过的,但它允许任何类类型,这是错误的。
更新:(根据评论)
@SuppressWarnings("unchecked")
public static <T extends Foo> Class<T> getClassOfTypeT(String clazz) {
Class<T> ruleType = null;
try {
ruleType = (Class<T>) Class.forName(clazz);
} catch (ClassNotFoundException e) {
logger.error("Can't cast " + clazz, e);
}
return ruleType;
}
public static void main(String[] args) {
System.out.println(getClassOfTypeT("java.lang.String"));//Should not be allowed
}
如何从字符串中获取Class<T>
?