Java泛型是否可以在运行时检查?
// @SuppressWarnings("unchecked")
private <T> T extractResult(Continuation continuation) {
Object result = continuation.getAttribute("result");
return (T) result;
}
(在运行时)是否可以验证result
是否可以强制转换为T
你可以在下面搜索框中键入要查询的问题!
// @SuppressWarnings("unchecked")
private <T> T extractResult(Continuation continuation) {
Object result = continuation.getAttribute("result");
return (T) result;
}
(在运行时)是否可以验证result
是否可以强制转换为T
# 1 楼答案
否。要在运行时进行检查,您需要一个类的实例,以便可以使用isAssignableFrom。由于类型擦除,您无法使用
T
访问此文件# 2 楼答案
不在这个方法中。与
T
相关的所有类型信息都将被编译器擦除# 3 楼答案
类型擦除将在运行时用
Object
替换T
。类型信息在运行时将不存在,因此无法对照类型进行检查# 4 楼答案
您可以通过正式尝试捕获ClassCastException来检查它。 然而,这并不能使警告消失
# 5 楼答案
这在运行时是可能的,但您需要一个泛型类型令牌。通常将其传递到泛型类型的构造函数中
然后在方法中,您可以在运行时检查它