未经检查从 X 转换为扩展 X 的泛型类型
Unchecked cast from X to generic type that extends X
我的任务是在我们的代码库中删除尽可能多的 @SupressWarning
,但我不确定如何解决这个特定问题。
我有这个外部方法 returns 一个 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;
}
}
是否可以在不产生未经检查的转换警告的情况下执行此转换(假设无法更改外部方法)?
这是Java8。
尝试用
替换产生未经检查的转换警告的行
T convertedObject = anyClassYouWant.cast(result);
要扩展 ferpel 的答案,您可以将类型作为参数传递
class A <T extends Serializable> {
public T someMethod(Class<T> type) {
Serializable result = someExternalMethod(...);
return type.cast(result);
}
}
我的任务是在我们的代码库中删除尽可能多的 @SupressWarning
,但我不确定如何解决这个特定问题。
我有这个外部方法 returns 一个 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;
}
}
是否可以在不产生未经检查的转换警告的情况下执行此转换(假设无法更改外部方法)?
这是Java8。
尝试用
替换产生未经检查的转换警告的行T convertedObject = anyClassYouWant.cast(result);
要扩展 ferpel 的答案,您可以将类型作为参数传递
class A <T extends Serializable> {
public T someMethod(Class<T> type) {
Serializable result = someExternalMethod(...);
return type.cast(result);
}
}