gpt4 book ai didi

java - 涉及类型参数时,List> 不能赋值给 List>

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:22 27 4
gpt4 key购买 nike

在下面的代码中,get()被调用并将其结果分配给类型为 List<List<?>> 的变量. get()返回 List<List<T>>并在类型参数为 T 的实例上调用设置为 ? ,所以它应该适合。

import java.util.List;

class Test {
void foo(NestedListProducer<?> test) {
List<List<?>> a = test.get();
}

interface NestedListProducer<T> {
List<List<T>> get();
}
}

但是 IntelliJ IDEA 和 Oracle 的 javac版本 1.7.0_45 拒绝我的代码无效。这是“javac”的错误信息:

java: incompatible types
required: java.util.List<java.util.List<?>>
found: java.util.List<java.util.List<capture#1 of ?>>

为什么此代码无效,即如果允许它会出现什么问题?

最佳答案

? 是一个通配符,表示任何类型。一个 ? 不能与另一个 ? 相同,因为另一个 ? 可能是任何其他类型,并且它们不匹配。您必须使用泛型来表示类型相同:

// Make this generic
<A> void foo(NestedListProducer<A> test) {
List<List<A>> a = test.get();
}

关于java - 涉及类型参数时,List<List<?>> 不能赋值给 List<List<?>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984773/

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