Ich habe ein Problem mit begrenzten verschachtelten Platzhalter in Java Generics.Java geschachtelte Wildcard generische wird nicht kompilieren
Hier ist ein häufiger Fall:
public void doSomething(Set<? extends Number> set) {}
public void callDoSomething() {
Set<Integer> set = new HashSet<Integer>();
doSomething(set);
}
Dies ist Standard-Java-Generika, funktioniert gut.
jedoch, wenn die Platzhalter verschachtelt werden, ist es nicht mehr funktioniert:
public void doSomething(Map<String, Set<? extends Number>> map) {}
public void callDoSomething() {
Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();
doSomething(map);
}
Dies zu einem Compiler-Fehler führt.
Ich habe eine Vielzahl von Casts und Platzhalterpermutationen ausprobiert, aber ich kann das nicht funktionieren. Ich kann mich nicht erinnern, dieses Thema schon einmal gesehen zu haben, und ich habe jahrelang mit Generika gearbeitet. Bin ich einfach zu müde und vermisse etwas Offensichtliches?
Es gibt eine Erklärung dafür in den Java Generics FAQ: http://www.angelikalanger.com/GenericsFAQ/FAQSections /TypeArguments.html#FAQ104 –