Java嵌套通配符泛型WIN';不编译

Java嵌套通配符泛型WIN';不编译,java,generics,nested,wildcard,Java,Generics,Nested,Wildcard,我对Java泛型中的有界嵌套通配符有一个问题 以下是一个常见的情况: public void doSomething(Set<? extends Number> set) {} public void callDoSomething() { Set<Integer> set = new HashSet<Integer>(); doSomething(set); } public void doSomething(设置因此问题是,doSome

我对Java泛型中的有界嵌套通配符有一个问题

以下是一个常见的情况:

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

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

public void doSomething(设置因此问题是,
doSomething
可以实现为:

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

public void doSomething(Map使代码正常工作创建HashMap为:

Map<String, Set<? extents Number>> map = new HashMap<String, Set<? extents Number>>();

Map这将适用于您:

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

public void doSomething(是的,我刚刚独立意识到了这一点。我可以发誓我昨天就尝试过了,但我可能还有其他一些微妙的变化。Java泛型常见问题解答中对此有一个解释:
Map<String, Set<? extents Number>> map = new HashMap<String, Set<? extents Number>>();
public void doSomething(Map<String, ? extends Set<? extends Number>> map) {}