从 X 到扩展 X 的泛型类型的未经检查的强制转换

我的任务@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。


红糖糍粑
浏览 99回答 2
2回答

慕斯王

要扩展ferpel的答案,您可以将类型作为参数传递&nbsp; &nbsp; class A <T extends Serializable> {&nbsp; &nbsp; &nbsp; &nbsp; public T someMethod(Class<T> type) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serializable result = someExternalMethod(...);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return type.cast(result);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }

喵喵时光机

尝试将产生未经检查的强制转换警告的行替换为T&nbsp;convertedObject&nbsp;=&nbsp;anyClassYouWant.cast(result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java