我有一个与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);
}
这会导致编译错误。
我尝试了各种转换和通配符排列,但无法使其正常工作。我不记得以前看到过这个问题,而且我已经使用泛型工作多年了。是我太累了错过了一些显而易见的东西吗?