Wir haben bereits darüber gesprochen, dass Klassen komplexe Datentypen sind. Lassen Sie uns nun ein wenig über die andere Seite von Klassen sprechen – wie Klassen von der Java-Maschine gehandhabt werden. Denken Sie daran, dass in Java alles ein Objekt ist, sogar eine Klasse. Eine Klasse ist ein Objekt. Überrascht dich das? Dann lasst uns weitermachen.
Laden einer Klasse in den Speicher
Tatsächlich werden beim Laden einer Klasse in den Speicher drei spezielle „Objekte“ erstellt:

Kurze Beschreibung der Abbildung:
Gelbes Rechteck:
Die Codedatei wird als Datei mit der Erweiterung „.class“ auf der Festplatte gespeichert. Es enthält Informationen über die Klasse, ihre Felder und Methoden sowie den Quellcode der in Bytecode kompilierten Methoden.
Orangefarbenes Rechteck:
Wenn die Java-Maschine eine Klasse in den Speicher lädt, kompiliert sie den Bytecode in Maschinencode, der für den Prozessor und das Betriebssystem des Computers spezifisch ist. Nur die Java-Maschine hat Zugriff auf diesen Maschinencode. Als Java-Programmierer haben wir keinen Zugriff darauf.
Grünes Rechteck:
Die Java-Maschine erstellt ein Objekt, das alle statischen Variablen und Methoden der Klasse enthält. Auf dieses „Objekt“ greifen Sie über den Klassennamen zu.
Wenn Sie beispielsweise schreiben , beziehen Sie sich auf die statische Variable in der Klasse. Dieses Objekt ist unser grünes Rechteck. Und dort wird die statische Variable gespeichert.java.lang.Math.PI
PI
java.lang.Math
java.lang.Math
PI
Blaues Rechteck:
Wenn die Java-Maschine den Code einer Klasse in den Speicher lädt, erstellt sie ein spezielles java.lang.Class
Objekt, das Informationen über die geladene Klasse speichert: ihren Namen, Methodennamen, Feldnamen und -typen usw.
Der Name „Klasse“ kann etwas verwirrend sein. Sinnvoller wäre es, sie ClassInfo zu nennen, da diese Klasse nur einige Informationen über die geladene Klasse speichert.
Sie können das Klassenobjekt für jeden Typ mit einem Befehl wie diesem abrufen:
Class name = ClassName.class;
Beispiele:
Code | Notiz |
---|---|
|
Holen Sie sich ein Class Objekt mit Informationen über die String Klasse |
|
Holen Sie sich ein Class Objekt mit Informationen über die Object Klasse |
|
Holen Sie sich ein Class Objekt mit Informationen über die Integer Klasse |
|
Holen Sie sich ein Class Objekt mit Informationen zum int Typ |
|
Holen Sie sich ein Class Objekt mit Informationen zum void Typ |
Sie können auch von jedem Objekt eine Referenz auf ein Klassenbeschreibungsobjekt erhalten, da jedes Objekt über die getClass()
Methode verfügt, die es von der Klasse erbt Object
.
Beispiele:
Code | Notiz |
---|---|
|
Gleiches Objekt wieString.class |
|
Gleiches Objekt wieInteger.class |
|
Gleiches Objekt wieBoolean.class |
GO TO FULL VERSION