未经检查从 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);
        }
    }