In Java, gli oggetti di classe hanno le stesse relazioni di ereditarietà delle classi che rappresentano?È (il tipo di) String.class un sottotipo di (il tipo di) Object.class?
risposta
La proprietà .class
restituisce sempre un oggetto Class
. La classe Class
(strana) ha un parametro generico. I tipi di parametri generici sono sottoclassi.
Class<String> stringClass = String.class;
Class<Object> objectClass = Object.class;
E poiché con i generici, Type<foo>
NON è un supertipo di Type<subtype_of_foo>
(vedi the Java tutorials), questo significa, che la risposta è "No".
oggetti in Java sono tutti della stessa classe.
Si può dire, perché se si guarda al Javadoc si può vedere che il Class
class is final
.
No, non c'è una sola classe con il nome Class
. String.class è un'istanza di classe, oltre a Object.class.
Il motivo classe non si estende classe anche se Y si estende X è che per ogni tipo generico G, G non si estende G
Si potrebbe desiderare di guardare questo in FAQ, ecc Un sacchetto di mele non è un sacchetto di frutta, anche se la mela è un frutto; perché puoi aggiungere qualsiasi frutto a quest'ultimo, ma solo le mele al primo.
provare questo codice:
boolean answer = Object.class.isAssignableFrom(String.class);
System.out.println(answer); // true!
però:
Class<Object> string = String.class; <-- compile-time error
Class<? extends Object> string = String.class; <-- it's ok
Se ho capito bene la tua domanda, non è questo il caso. L'oggetto che rappresenta la classe di java.lang.String
, così come qualsiasi altra classe, appartiene sempre alla classe java.lang.Class
.
Tenete a mente che java.lang.Class
è definito come finale, quindi non è possibile sottoclasse esso.
Tutti gli oggetti di classe sono istanze di una classe.
Se volete sapere la gerarchia di una classe è possibile chiamare il getSuperclass() e getInterfaces()
Nota: Potrebbe essere necessario chiamare questi in modo ricorsivo per ottenere tutte le classi e le interfacce eccellenti.
- 1. su java: ottieni `String []. Class` da` String.class`, cosa succede se `String.class` è un" tipo di runtime "?
- 2. Come posso verificare se un tipo è un sottotipo di un tipo in Python?
- 3. Sottotipo e parametri di tipo in Scala
- 4. Come determinare se un parametro di tipo è un sottotipo di un tratto?
- 5. Il controllo di un tipo di classe (.class) è uguale ad un altro tipo di classe
- 6. tipo di firma con il tipo privato
- 7. Tipo di trasmissione utilizzando il parametro tipo
- 8. dizionario non riconosce il tipo di chiave
- 9. Qual è il tipo dedotto di un vettore di chiusure?
- 10. Qual è il tipo di contenuto di un file .ini?
- 11. Qual è il tipo MIME di TypeScript?
- 12. Il tipo di schema astratto è sconosciuto
- 13. Qual è il tipo di Vec3b?
- 14. Il mio tipo di codice è sicuro?
- 15. Qual è il tipo di dati "atom"?
- 16. Il tipo di variabile 'a0' è ambiguo
- 17. Qual è il tipo di T?
- 18. Verificare se il tipo di oggetti eredita un tipo astratto
- 19. come ottenere il valore predefinito di un tipo se il tipo è noto solo come System.Type?
- 20. Il parametro di tipo non estende il tipo dato
- 21. Il riferimento di tipo non è in grado di trovare il tipo pubblico denominato
- 22. graphQL - il tipo deve essere il tipo di uscita
- 23. Come estrarre il tipo specifico da un'istanza di un tipo generico in julia?
- 24. eccezione strano "non valido di classe tipo di ricevitore java.lang.Object, non un sottotipo di ..."
- 25. tipo di data non è un tipo di sistema definito
- 26. Chiamando il costruttore di un tipo generico
- 27. Symfony 3 - Impossibile caricare il modulo di tipo di tipo
- 28. Come determinare se un tipo è un tipo di collezione?
- 29. Ottenere il tipo di membro
- 30. Java: crea un oggetto il cui tipo è un parametro di tipo
No, i tipi di parametri generici NON sono sottoclassi; sono tutti della stessa classe, a causa della cancellazione dei tipi, i parametri generici non esistono una volta che il compilatore ha fatto la sua cosa. –
Grazie per essere riuscito a esprimere il mio pensiero in parole. Il mio cervello non è del tutto in ordine. Tempo per un po 'di succo di cervello ... –
La classe ha il suo argomento generico ... –