In diesem Artikel wird hauptsächlich die Klassifizierung und Verallgemeinerung der Java -Sprachklasse vorgestellt (detaillierte Erklärung). Diese Information zeichnet die Klasse jedes Objekts auf. Die virtuelle Maschine verwendet normalerweise die korrekte Methode zum Ausführen der Typinformationen. Die Klassenklasse umfasst einen Zustand und der Status der Schnittstelle wird ausgeführt, wenn die Ladeklasse automatisch erstellt wird.
Klar ausdrücken:
Die Klassenklasse ist auch eine Klasse, aber der Name ähnelt dem des Keywords der Klasse. Java ist eine sensible Sprache.
Der Inhalt der Klassenklasse ist die Typinformationen der Klasse, die Sie erstellt haben.
Objekte der Klassenklasse können nicht wie eine gewöhnliche Klasse auf neue Form () erstellt werden.
Die Rolle der Klassenklasse besteht darin, während der Laufzeit ein bestimmtes Objekt bereitzustellen oder zu erhalten, das ein bestimmtes Objekt bereitstellt oder erhalten oder die Funktion der TypeID () in C ++ ähnelt. Diese Informationen können auch zur Reflexion verwendet werden.
1. Klassenklassenprinzip
Wir alle wissen, dass alle Java -Klassen die Objektklasse erben. Klassenklasse. Wir können kein Klassenobjekt generieren (der Konstruktor ist privat), und das Objekt dieser Klassenklasse besteht darin, das Klassenobjekt automatisch von der java -virtuellen Maschine zu erstellen, wenn es übertragen wird, oder es wird von der definitiven Methode im Lader generiert. Die von uns generierten Objekte haben ein Feld, um den Speicherort des Objekts des Objekts in der Klassenklasse des Objekts aufzuzeichnen. Wie in der Abbildung unten gezeigt:
2. Holen Sie sich ein Klassenobjekt
Die erste Methode ist die Forname -Funktion der Klassenklasse
Kopieren Sie den Code -Code wie folgt:
öffentliche Klasse Formen {}
Klasse obj = class.Forname ("Formen");
Die zweite Methode besteht darin, das Objekt des Objekts des Objekts zu verwenden
Kopieren Sie den Code -Code wie folgt:
öffentliche Klasse Formen {}
forces s1 = new forces ();
Klasse obj = s1.getClass ();
Klasse OBJ1 = S1.getSuperClass ();
Die dritte Methode besteht darin, die Art der Typkonstante zu verwenden
Kopieren Sie den Code -Code wie folgt:
Klasse obj = string.class;
Klasse obj1 = int.Class;
Beachten Sie, dass JVM bei Verwendung dieser Methode zum Generieren des Klassenklassenobjekts die Klasse (z. B. Zeichenfolge) nicht automatisch lädt. Andere Methoden lassen JVM diese Klasse initialisieren.
3.. Verwenden Sie das Objekt der Klassenklasse, um eine Instanz der Zielklasse zu generieren
Ungenaue Objektinstanz
Nachdem Sie ein Objekt der Klassenklasse erhalten haben, können Sie die Funktion von NewInstance () verwenden, um eine Instanz der Zielklasse zu generieren. Diese Funktion generiert jedoch nicht direkt Instanzen der Zielklasse und kann nur Instanzen der Objektklasse generieren
Kopieren Sie den Code -Code wie folgt:
Klasse obj = class.Forname ("Formen");
Objekt formSinstance = obj.newinstance ();
Verwenden Sie die Generalisierungsklasse, um die Zielinstanz des Typs Gürteltyp zu verweisen
Kopieren Sie den Code -Code wie folgt:
Klasse <Phapes> obj = formes.class;
formt NewShape = obj.newinstance ();
Aufgrund der Typbegrenzung kann der Objektverweis auf die Generalisierungsklassensyntax nicht in andere Kategorien gerichtet werden.
Kopieren Sie den Code -Code wie folgt:
Klasse obj1 = int.Class;
Klasse <Integer> obj2 = int.Class;
obj1 = double.class;
//Obj2=double.class;
Diese Code -Zeile ist illegal.
Kopieren Sie den Code -Code wie folgt:
Klasse <?
obj = number.class;
obj = double.class;
Daher kann das unten generierte Klassenobjekt auf jede Klasse verweisen.
Kopieren Sie den Code -Code wie folgt:
Klasse <?> Obj = int.Class;
obj = double.class;
obj = formes.class;
Die letzte seltsame Verwendung ist, dass Sie, wenn Sie diese generische Syntax verwenden, um ein Basisklassenobjekt eines Objekts einer Klassenklasse zu erstellen, die Sie zur Hand haben, die folgende spezielle Grammatik verwenden müssen
Kopieren Sie den Code -Code wie folgt:
öffentliche Klasse Formen {}
Die Klasse Runde erweitert die Formen {}
Klasse <Rand> rclass = rund.class;
Klasse <?
// class <Phapes> sclass = rclass.getSuperClass ();
Sie müssen hier beachten, dass Sie wissen, dass die Basisklasse der Runde Formen ist, aber Sie können die Klasse <Spape> nicht direkt deklarieren
Die Einführung des obigen Inhalts ist der gesamte Inhalt der Klassifizierungsmethode und -verallgemeinerung der Java -Sprachklasse (detaillierte Erklärung).