3

我的任务@SupressWarning是在我们的代码库中删除尽可能多的 s,但我不确定如何解决这个特定问题。

我有这个返回对象的外部方法,以及我想将对象转换为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

4

2 回答 2

3

要扩展ferpel的答案,您可以将类型作为参数传递

    class A <T extends Serializable> {

        public T someMethod(Class<T> type) {
            Serializable result = someExternalMethod(...);
            return type.cast(result);
        }
    }
于 2019-02-11T16:57:12.670 回答
0

尝试将产生未经检查的强制转换警告的行替换为

T convertedObject = anyClassYouWant.cast(result);
于 2019-02-11T16:45:52.227 回答