我在Java泛型中有一個有界嵌套通配符的問題。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泛型常見問題中:http://www.angelikalanger.com/GenericsFAQ/FAQSections /TypeArguments.html#FAQ104 – 2014-12-11 23:27:54