gpt4 book ai didi

Java 嵌套通配符泛型无法编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:29 27 4
gpt4 key购买 nike

我对 Java 泛型中的有界嵌套通配符有疑问。

这是一个常见的例子:

public void doSomething(Set<? extends Number> set) {}

public void callDoSomething() {
Set<Integer> set = new HashSet<Integer>();
doSomething(set);
}

这是标准的 Java 泛型,工作正常。

但是,如果通配符嵌套,它就不再起作用了:

public void doSomething(Map<String, Set<? extends Number>> map) {}

public void callDoSomething() {
Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();
doSomething(map);
}

这会导致编译器错误。

我已经尝试了各种强制转换和通配符排列,但我无法使其正常工作。我不记得以前见过这个问题,而且我已经使用泛型多年了。我是不是太累了,错过了一些明显的东西?

最佳答案

所以问题是,doSomething 可以实现为:

public void doSomething(Map<String, Set<? extends Number>> map) {
Set<Float> set = ...;
map.put("xyz", set);
}

您需要确定您的实际意思。

大概是这样的:

public void doSomething(Map<String, ? extends Set<? extends Number>> map) {}

关于Java 嵌套通配符泛型无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405866/

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