Kurze Beschreibung:
Seit ich in letzter Zeit viele Klassen begegnet bin, die reflektiert werden müssen, und es gibt viele interne Klassen. Hier werde ich die Regeln vollständig qualifizierter Namen interner Klassen zusammenfassen.
Interne Klasse
Die Testergebnisse zeigen, dass unabhängig davon, ob die interne Klasse innerhalb des Mitglieds statisch ist oder nicht, ihr vollständig qualifizierter Name mit der folgenden Benennungsmethode verwendet wird:
Paketname.external Klassenname $ interne Klasse Name
Testcode:
Paket com.test; öffentliche Klasse InnerclasStest {statische Klasse staticInner {} Klasse Inner {} public static void main (String [] args) {staticInner si = new staticInner (); innere in = new Innerclasstest (). New Inner (); System.out.println (si.getClass ()); System.out.println (in.getClass ());}}Druckergebnis:
classcom.test.innerclasstest $ staticInner
classcom.test.innnerClasStest $ Inner
Anonyme interne Klasse
Die vollständig qualifizierten Namen anonymer interner Klassen entsprechen den folgenden Regeln:
Paketname. Positive Ganzzahl beginnend mit dem externen Klassennamen $ 1 - angeordnet in der Reihenfolge der Klassenbelastung angeordnet
Testcode
Paket com.test; public class Innerclasstest {static Object staticancklass = new Object () {}; static Object staticBlockanclass; static {staticBlockancLass = new Object () {};} Objekt anclass = new Object () {}; args) {InnerClasStest FunktionClass = new Innerclasstest () {}; System.out.println (staticancklass.getClass ()); system.out.println (staticblockanclass.getClass ()); InnerclasStest Test = New New InnerclasStest (); System.out.println (test.ancklass.getClass ()); System.out.println (test.blockanclass.getClass ()); Druckergebnis:
Klasse com.test.innnerClasStest $ 1
Klasse com.test.innerclasstest $ 2
Klasse com.test.innerclasstest $ 3
Klasse com.test.innerclasstest $ 4
Klasse com.test.innerclasstest $ 5
Lokale interne Klassen
Die vollständig qualifizierten Namen lokaler interner Klassen werden wie folgt verwendet:
Paketname. Der externe Klassenname $ $ folgt eine positive Ganzzahl, beginnend mit 1, gefolgt von einem lokalen Klassennamen - wobei der numerische Teil die Reihenfolge ist, in der die lokale Klasse im Kontext der externen Klasse erscheint
Testcode
Paket com.test; public class InnerclasStest {public static void main (String [] args) {functiona (); functionB ();} public static void functiona () {class Inner {}; system.out.println (New Inner (). Inner (). GetClass ());}} Das obige Beispiel druckt das Ergebnis:
classcom.test.innnerClasStest $ 1inner
classcom.test.innerclasstest $ 2inner
Basierend auf dem Testcode das Ergebnis nach dem Austausch der Funktions- und B -Positionen in Main:
classcom.test.innerclasstest $ 2inner
classcom.test.innnerClasStest $ 1inner
Das Ergebnis des Austauschs der Standorte von Funktions- und B -Deklarationen basierend auf dem Testcode:
classcom.test.innerclasstest $ 2inner
classcom.test.innnerClasStest $ 1inner
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über das voll qualifizierte Namensregel -Codes -Beispiel von Java -internen Klassen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!