Ho un problema con i caratteri jolly nidificati limitati in generici Java.jolly nidificato Java generico non verrà compilato
Ecco un caso comune:
public void doSomething(Set<? extends Number> set) {}
public void callDoSomething() {
Set<Integer> set = new HashSet<Integer>();
doSomething(set);
}
Si tratta di farmaci generici standard di Java, funziona bene.
Tuttavia, se il jolly diventa nidificato, non funziona più:
public void doSomething(Map<String, Set<? extends Number>> map) {}
public void callDoSomething() {
Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();
doSomething(map);
}
Questo porta ad un errore del compilatore.
Ho provato una varietà di cast e permutazioni con caratteri jolly, ma non riesco a farlo funzionare. Non ricordo di aver visto prima questo problema, e ho lavorato con i generici per anni. Sono semplicemente troppo stanco e mi manca qualcosa di ovvio?
C'è una spiegazione per questo nelle FAQ di Java Generics: http://www.angelikalanger.com/GenericsFAQ/FAQSections /TypeArguments.html#FAQ104 –