Da Effective Java Seconda edizione, punto 28: "Non usare tipi jolly come tipi di ritorno Piuttosto che garantisce una maggiore flessibilità per gli utenti li costringerebbe. utilizzare i caratteri jolly nel codice client. "Perché di Guava TypeToken <T> .getRawType() ritorno Classe <? super T> invece di Classe <T>
public final Class<? super T> getRawType()
Sono appena stato alle prese con caratteri jolly generici per capire l'ultimo avvertimento getto incontrollato che ho in un pezzo di codice che sto scrivendo e non capisco il motivo per cui getRawType() restituisce un tipo jolly.
class Base<T>{}
class Child<T> extends Base<T>{}
public <C> void test (TypeToken<? extends Base<C>> token) {
Class<? extends Base<C>> rawType = (Class<? extends Base<C>>) token.getRawType();
}
devo lanciare token.getRawType(), in quanto restituisce un
Class<? super ? extends Base<C>>
Grazie a @newacct, questa è la cosa Non ho capito, ma ha senso che ArrayList estenda ArrayList. La classe super T> è descrittiva di ciò che viene restituito anche se per quanto riguarda il codice client potrebbe anche restituire la classe >, poiché sarà sempre necessario eseguirla. –
MikeB