Reflection kann Klassen dynamisch laden, Objekte instanziieren und Methoden aufrufen. Nehmen wir nun zur Erläuterung das folgende Beispiel.
1. Laden Sie die Klasse.
Class clazz = Class.forName("java.lang.String"); //Dieser Code ruft ein Klassenobjekt der String-Klasse ab. Der Parameter gibt den Paketnamen ein.
Wenn Sie URLClassLoader verwenden, können Sie das lokale oder Remote-JAR-Paket laden und das spezifische Klassenobjekt über die Loadclass-Methode abrufen.
2. Objekte instanziieren.
Wenn das Objekt über den Standardkonstruktor instanziiert wird, können wir die folgende Methode des Klassenobjekts verwenden, um ein Objekt abzurufen, z. B.
clazz..newInstance();
Wenn Sie ein Objekt mithilfe des parametrisierten Konstruktors instanziieren möchten, können Sie den folgenden Code verwenden:
Constructor> myConstructor = myClass.getConstructor(parameterTypes);//Ein Konstruktorobjekt abrufen.
Wobei parameterTypes Class>... ist, sind ParameterTypes wie String.class, int.class usw. Rufen Sie dann das instanziierte Objekt über das Konstruktorobjekt ab:
myConstructor.newInstance("xxx",123); geben Sie die spezifischen Konstruktionsparameter im Konstruktor ein.
Drei, rufen Sie die Methode auf.
Methode mezod = clazz.getMethod(methodName, parameterTypes); Sie können das Objekt der Methodenklasse abrufen und dann können wir die Methode über die Aufrufmethode von mezod ausführen.
mezod.invoke(obj,"xxx",123);//Der erste Parameter ist das initiierende Objekt dieser Methode. Wenn null ausgefüllt ist, bedeutet dies, dass die statische Methode aufgerufen wird.
Der Artikel wurde von CSDN.NET reproduziert. Bitte kontaktieren Sie uns, um ihn zu löschen.
Das Obige ist der Inhalt eines sehr einfachen JAVA-Reflexions-Tutorials Verwandte Inhalte, achten Sie bitte auf die chinesische PHP-Website (www. php.cn)!