gpt4 book ai didi

Java 类型安全转换问题

转载 作者:行者123 更新时间:2023-11-29 03:16:07 24 4
gpt4 key购买 nike

我有两个类如下:

// Jackson annotated-class
public class User {

}

和:

// Jackson annotated-class
public class ResponseWrapper<ResultType> {
...
}

在某个操作过程中,我需要进行一次转换。

  • 案例一:

    ResponseWrapper<User> r = (ResponseWrapper<User>) result.getResult();

    警告: Type safety: Unchecked cast from Object to ResponseWrapper<User>

  • 案例 2:

    Object o = result.getResult();
    if ( o instanceof ReaponseWrapper<?> ) {
    ResponseWrapper<?> r = (ResponseWrapper<?>) result.getResult(); // OK
    }

    没有警告

  • 案例三

    Object o = result.getResult();
    if ( o instanceof ResponseWrapper ) {
    ResponseWrapper<User> r = (ResponseWrapper<User>) result.getResult();
    }

    警告(再次):Type safety: Unchecked cast from Object to ResponseWrapper<User>

如何从 Object 执行类型安全转换至 ResponseWrapper<User>

最佳答案

你不能。泛型是一种编译时帮助。在运行时,Java 使用类型删除。因此,Java 无法在运行时检查您的包装器是否为 ResponseWrapper<Foo>。或 ResponseWrapper<Bar> .它只能检查它是否是 ResponseWrapper .这就是您收到此类警告的原因。

关于Java 类型安全转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com