【发布时间】:2010-08-04 13:15:42
【问题描述】:
我对 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);
}
这会导致编译器错误。
我尝试了各种类型的强制转换和通配符排列,但无法正常工作。我不记得以前见过这个问题,而且我已经使用仿制药多年了。我是不是太累了,错过了什么明显的东西?
【问题讨论】:
-
Java 泛型常见问题解答中有对此的解释:angelikalanger.com/GenericsFAQ/FAQSections/…
标签: java generics nested wildcard