java - 未经检查从 X 转换为扩展 X 的泛型类型

标签 java java-8 casting unchecked-cast unchecked-conversion

我的任务是在我们的代码库中删除尽可能多的 @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

最佳答案

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

    class A <T extends Serializable> {

        public T someMethod(Class<T> type) {
            Serializable result = someExternalMethod(...);
            return type.cast(result);
        }
    }

关于java - 未经检查从 X 转换为扩展 X 的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635146/

相关文章:

java - 子类的 Jackson 序列化

java - 使用Java计算目录中的文件数

c++ - 模板类的类型转换问题

java - 我的构建器对象的实现有哪些缺点?

java - 将静态值分配给数组中前 10 个位置的更快方法

java - 按属性对对象列表进行分组并计算每个键的对象属性的平均值

java - 切换到 Java 8 时出现比较器问题

java - "invalid use of @throws"在类路径中有 log4j-core 时编译错误

java - "Dynamic"Java 中的转换

c++ - 如果没有使用某种类型实例化模板,是否可能触发编译器/链接器错误?