2013-05-05 12 views
9

Qual è la differenza tra Class<?> e Class<Object> in Java? AFAIK Java Erasure modifica <?> al limite superiore, che in questo caso sarebbe Object in ogni caso. Quindi, a cosa serve?Differenza tra Classe <?> e Classe <Object> in Java

+2

Intuitivamente, ci si sente sbagliato avere una classe '' essere altro che ' Object.class'. Principalmente perché mi ricorda le molte, molte domande che sono nella forma "Voglio assegnare un' Elenco 'a un' Elenco 'ma Java non me lo consente." Quando scrivi il codice, non devi preoccuparti principalmente di ciò che i generici cancelleranno: l'intero punto dei generici è di lasciare che il compilatore faccia qualche tipo di controllo * prima * di essere cancellati. – millimoose

+0

possibile duplicato di [Qual è la differenza tra? e Object in Java generics?] (http://stackoverflow.com/questions/678822/what-is-the-difference-between-and-object-in-java-generics). Vedi anche [Java: Diversi tra Elenco, Lista , Lista , Lista , e Lista ] (http://stackoverflow.com/questions/6231973/java-different-traviso-list-list-listt-liste-and -listobject) –

+0

Penso che questo http://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html lo spieghi abbastanza bene se ho capito correttamente la domanda. – arynaq

risposta

6

la differenza è che Collection<String> non è un sottotipo di Collection<Object>, Collection<?> è utilizzabile in luogo come un argomento in cui qualsiasi raccolta può essere messo

+1

Classe non è sicuramente un tipo super di tutte le raccolte. Innanzitutto, 'Class' non ha nulla a che fare con le collezioni. Anche tu intendi il tipo super di tutti i 'Class', è ancora sbagliato. Qualche lettura in più sui caratteri jolly nei generici. –

+0

Risolto il problema, è meglio smettere di votare – aaronman

+2

Cosa c'è di sbagliato in questo – aaronman

Problemi correlati