HOWTO · Java
Come ispezionare la classe runtime di un oggetto in Java
Scopri come usare getClass(), getSimpleName() e getTypeName() per esaminare la classe runtime di un oggetto Java, distinta dal tipo dichiarato della variabile.
In questa pagina
Usa getClass() per esaminare la classe runtime di un oggetto non nullo. Non rivela il tipo dichiarato della variabile. Chiama getSimpleName() per ottenere il nome della classe senza il relativo package, oppure getTypeName() per un nome di tipo come java.lang.String.
Usare getClass().getSimpleName() per esaminare la classe runtime di un oggetto in Java
Chiama getClass() su un oggetto per ottenere il relativo oggetto Class<?>, poi chiama getSimpleName() per ricavare il nome della classe senza le informazioni sul package. Il risultato riflette la classe runtime dell’oggetto, anche quando la variabile è dichiarata come Object.
Esegui questo esempio:
public class RuntimeSimpleNames {
public static void main(String[] args) {
Object value = "Hello, Java!";
String[] names = {"Ada", "Lin"};
int count = 3;
Object boxedCount = count;
System.out.println(value.getClass().getSimpleName());
System.out.println(names.getClass().getSimpleName());
System.out.println(boxedCount.getClass().getSimpleName());
}
}
String
String[]
Integer
Gli array sono oggetti, quindi anche su di essi puoi usare getClass(); un valore String[] ha il nome semplice String[]. Un tipo primitivo come int non dispone del metodo getClass(). Assegnandolo a un Object, Java lo converte tramite boxing in un Integer: la classe riportata è quindi Integer, non int.
Usare getClass().getTypeName() per esaminare la classe runtime di un oggetto in Java
getTypeName() restituisce il nome del tipo come String. Per un oggetto String, include il nome del package, a differenza di getSimpleName().
Esegui questo esempio:
public class RuntimeTypeName {
public static void main(String[] args) {
Object value = "Hello, Java!";
String typeName = value.getClass().getTypeName();
System.out.println(typeName);
}
}
java.lang.String
Entrambi i metodi partono da un oggetto non nullo e ne riportano la classe runtime. Scegli getSimpleName() quando basta il nome breve della classe; usa getTypeName() quando è utile il nome del tipo completo di package. Nessuno dei due metodi determina il tipo dichiarato di una variabile.
Conclusione
Usa getClass().getSimpleName() per ottenere un nome di classe conciso e getClass().getTypeName() per un nome di tipo che include le informazioni sul package. Questi metodi si applicano agli oggetti, compresi gli array. Prima di esaminare un valore primitivo, convertilo tramite boxing; ricorda che il risultato è la classe wrapper, per esempio Integer per un int.