Ein Klassenobjekt ist eine Art Metaobjekt, das die Klasse eines Objekts beschreibt. Es wird hauptsächlich mit den Reflexionsfunktionen von Java verwendet. Sie können es sich wie eine "Blaupause" der tatsächlichen Klasse vorstellen. ZB hast du ein Klasse Auto wie dieses:
public class Car {
public String brand;
}
Sie können dann ein Klassenobjekt erstellen, das Ihre "Auto" -Klasse beschreibt.
Class myCarClass = Class.forName("Car");
Jetzt können Sie alle Arten von Abfragen für Ihre Auto-Klasse für dieses Klassenobjekt durchführen:
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
und so weiter. Jedes Java-Objekt verfügt über eine Methode getClass (), die das Class-Objekt zurückgibt, das die Klasse des Java-Objekts beschreibt. Sie könnten also so etwas tun:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
Dies funktioniert auch für Objekte, die Sie nicht kennen, z. B. Objekte, die Sie von außen erhalten:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
Sie können diese Methode mit jedem Java-Objekt füttern und es wird die tatsächliche Klasse des Objekts gedruckt, das Sie ihm gegeben haben.
Wenn Sie mit Java arbeiten, müssen Sie sich die meiste Zeit nicht um Klassenobjekte kümmern. Sie haben jedoch einige praktische Anwendungsfälle. Mit ihnen können Sie beispielsweise Objekte einer bestimmten Klasse programmgesteuert instanziieren, was häufig für die Serialisierung und Deserialisierung von Objekten verwendet wird (z. B. das Hin- und Herkonvertieren von Java-Objekten in / von XML oder JSON).
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance();
Sie können es auch verwenden, um alle deklarierten Felder oder Methoden Ihrer Klasse usw. herauszufinden, was in bestimmten Fällen sehr nützlich ist. Wenn Ihre Methode beispielsweise ein unbekanntes Objekt erhält und Sie mehr darüber wissen müssen, z. B. wenn es eine Schnittstelle usw. implementiert, ist die Klassenklasse hier Ihr Freund.
Kurz gesagt, mit den Klassen Class, Field, Method usw. im Paket java.lang.reflect können Sie Ihre definierten Klassen, Methoden und Felder analysieren, neue Instanzen davon erstellen und Methoden aller Art aufrufen und sie ermöglichen es Ihnen, dies zur Laufzeit dynamisch zu tun.
Class
Klasse erbt von sichObject
selbst.Class.class
Gibt einClass
Objekt zurück, das dieClass
Klasse darstellt. Sie können über Reflexion nachdenken. MEIN KOPF ASPLODE.