Tengo un problema con los comodines anidados acotados en los genéricos de Java.El comodín anidado Java genérico no compilará
Aquí es un caso común:
public void doSomething(Set<? extends Number> set) {}
public void callDoSomething() {
Set<Integer> set = new HashSet<Integer>();
doSomething(set);
}
Ésta es genéricos estándar de Java, funciona bien.
Sin embargo, si el comodín se convierte anidado, ya no funciona:
public void doSomething(Map<String, Set<? extends Number>> map) {}
public void callDoSomething() {
Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();
doSomething(map);
}
Esto conduce a un error de compilación.
He intentado una variedad de moldes y permutaciones de comodines, pero no puedo hacerlo funcionar. No recuerdo haber visto este problema antes, y he trabajado con genéricos durante años. ¿Estoy demasiado cansado y me falta algo obvio?
Hay una explicación para esto en las Preguntas frecuentes sobre genéricos de Java: http://www.angelikalanger.com/GenericsFAQ/FAQSecciones /TypeArguments.html#FAQ104 –