我有一个泛型方法,它应该查找特定类型的类。我设法把那门课作为一门课程 Class<?>
,现在我想检查它是否真的是请求的类型,如果是,则返回它(否则为null)。唯一有效的代码就是尝试强制转换,如果失败则抛出异常。不过,我担心该代码的性能,因为它会经常使用,而且我听说抛出异常的性能不太好。
public static <T> Class<T> getThatClass() {
Class<?> clazz = // some internal lookup
try {
return (Class<T>) clazz;
} catch (ClassCastException e) {
return null;
}
}
有没有办法检查一下 clazz
属于类型 E
无一例外?我想要这样的东西,但遗憾的是,它不能编译:
public static <T> Class<T> getThatClass2() {
Class<?> clazz = // some internal lookup
if (clazz instanceof Class<T>) {
return (Class<T>) clazz;
} else {
return null;
}
}
2条答案
按热度按时间uxh89sit1#
Class.isAssignableFrom(..)
是用于类型检查的非示例变量。用法:它还包含检查和转换示例的有用方法:
djmepvbi2#
java泛型在运行时不存在。泛型是严格的编译时安全特性。你能做的就是
我没有从其他地方复制/粘贴这个。如果我找到了一个复制品,我会投封闭复制品