我的任务是在代码库中删除尽可能多的@SupressWarning
,而我不确定如何解决此特定问题。
我有这个外部方法,它返回一个Serializable
对象,以及一个通用类型T extends Serializable
,我想将该对象转换为该类型。
这是代码的简化版本:
class A <T extends Serializable> {
public T someMethod() {
Serializable result = someExternalMethod(...);
T convertedObject = (T) result; // produces unchecked cast warning
return convertedObject;
}
}
是否可以执行此转换而不会产生未经检查的强制转换警告(假设无法更改外部方法)?
这是 Java 8 。
答案 0 :(得分:3)
要扩展ferpel的答案,您可以将类型作为参数传递
class A <T extends Serializable> {
public T someMethod(Class<T> type) {
Serializable result = someExternalMethod(...);
return type.cast(result);
}
}
答案 1 :(得分:0)
尝试将产生未经检查的强制转换警告的行替换为
T convertedObject = anyClassYouWant.cast(result);