gpt4 book ai didi

Java 泛型转换为通配符规则

转载 作者:行者123 更新时间:2023-12-02 10:56:03 33 4
gpt4 key购买 nike

在简单的情况下,我可以轻松地从泛型类型降级为通配符类型:

List<Integer> intList = new ArrayList<>();
List<?> wildList = intList; // I can cast to a List<?>

但是,随着我的泛型变得更加复杂:

List<List<Integer>> nestedIntList = new ArrayList<>();
List<List<?>> nestedWildList = nestIntList; // This does not compile

有没有办法可以编译它?我是否遗漏了编译器正在保护我免受某些逻辑情况的影响?为什么我不能转换内部类型?

最佳答案

List<Integer>可分配给List<?>List<? extends Integer> 。同样,您可以将其分配给 List<? extends Number>List<Number> .

在类似的行中,您只能分配 List<List<Integer>>List<? extends List<?>>

参见:

Is List<Dog> a subclass of List<Animal>? Why are Java generics not implicitly polymorphic?

Java generics, nested collection of wildcard

关于Java 泛型转换为通配符规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51730679/

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