2013-05-13 23 views

risposta

9

Object è una classe base per tutte le classi java. Type è solo un'interfaccia di tag per tutte le classi che rappresentano i tipi. È stato introdotto in java 1.5 perché prima di java 1.5 non esistevano classi che rappresentassero il tipo java eccetto java.lang.Class. Poi, quando sono stati introdotti i farmaci generici, era necessario creare un po 'di astrazione generale comune per Class, array generico, ecc. Quindi hanno definito l'interfaccia Type.

+1

Infatti. La cosa fondamentale che OP potrebbe aver perso è che ogni 'Class' è essa stessa un' Object'. – Barend

+0

Quindi, vorrei usare Type quando ho bisogno di avere molti Object.class diversi? –

+0

No, dovresti usare 'Tipo' quando usi un'API che ne restituisce una. Nessuna altra occasione per farlo, e in effetti nessun altro modo per farlo. – EJP

0

"Oggetto" è il supertipo di tutte le classi, "Classe" è una classe che definisce una classe e "Tipo" è un supertipo che copre anche i tipi primitivi (int, booleano, ecc.).

+0

Completamente errato. Vedi il Javadoc. 'Object' non è un supertipo. 'Type' non è neanche un supertipo, è un' interface'; non copre i tipi primitivi; ed è usato solo per Generics. -1 – EJP

+0

Ecco cosa dice javadoc su java.lang.reflect.Type: "Type è la superinterfaccia comune ** per tutti i tipi ** nel linguaggio di programmazione Java, tra cui tipi non elaborati, tipi parametrizzati, tipi di array, variabili di tipo e ** tipi primitivi ** ". – javadeveloper

Problemi correlati