HOWTO · Java
Die Laufzeitklasse eines Objekts in Java ermitteln
Erfahren Sie, wie getClass() die Laufzeitklasse eines Java-Objekts zurückgibt und wie Sie die Methode mit Wrapper-Objekten verwenden.
Auf dieser Seite
Java besitzt keinen typeof-Operator. Um die Laufzeitklasse eines Objekts zu untersuchen, rufen Sie getClass() für eine nicht-null Objektreferenz auf. Primitive Werte wie int und char sind keine Objekte und können diese Methode nicht direkt aufrufen. Boxen Sie einen primitiven Wert zunächst, wenn Sie diesen Ansatz verwenden möchten. Java bietet außerdem weitere Möglichkeiten, mit Typinformationen zu arbeiten. getClass() ist hilfreich, wenn Sie die tatsächliche Klasse eines vorhandenen Objekts benötigen.
Fragen zu Typen und Operatoren sind im Java-Tutorial zusammengefasst, einschließlich der Antwort von Java auf die typeof-Frage.
Die Laufzeitklasse eines Objekts in Java ermitteln
getClass() ist in Object definiert und gibt ein Class-Objekt zurück, das die Laufzeitklasse des Empfängers beschreibt. Eine String-Referenz kann die Methode beispielsweise direkt aufrufen. Bei der Ausgabe dieses Class-Objekts wird auch der Paketname angezeigt, etwa als class java.lang.String.
Das folgende vollständige Java-Programm gibt eine Zeichenfolge und die Klasse des referenzierten Objekts aus:
class RuntimeClassExample {
public static void main(String[] args) {
String message = "Hello";
System.out.println(message);
System.out.println("Class: " + message.getClass());
}
}
Die Standardausgabe lautet:
Hello
Class: class java.lang.String
Wenn Sie mit einem primitiven Wert beginnen, weisen Sie ihn einem Wrapper-Objekt wie Integer oder Character zu, bevor Sie getClass() aufrufen. Beim Boxing wird ein primitiver Wert in das entsprechende Wrapper-Objekt umgewandelt. Beim Methodenaufruf muss die Referenz auf ein Objekt zeigen; eine null-Referenz hat keinen Empfänger.
Die Laufzeitklasse von Wrapper-Objekten in Java ermitteln
Mit Wrapper-Klassen können Sie Objekte untersuchen, die primitive Werte repräsentieren. Das folgende Beispiel verwendet Integer und Character. getClass() ermittelt die Laufzeitklasse des jeweiligen Objekts, während getSimpleName() den Namen ohne Paketangabe zurückgibt.
class WrapperClassExample {
public static void main(String[] args) {
Integer count = 20;
Character letter = 'G';
System.out.println("Integer class: " + count.getClass());
System.out.println("Character class: " + letter.getClass());
System.out.println("Integer simple name: " + count.getClass().getSimpleName());
System.out.println("Character simple name: " + letter.getClass().getSimpleName());
}
}
Diese Aufrufe liefern die Klassennamen java.lang.Integer und java.lang.Character; die einfachen Namen lauten Integer und Character.