Verwendung von Reflection zum Aufrufen der Java-Methode zur Laufzeit
Reflection ist ein sehr nützlicher Ansatz, um mit der Java-Klasse zur Laufzeit umzugehen. Sie kann verwendet werden, um die Java-Klasse zu laden, ihre Methoden aufzurufen oder die Klasse zur Laufzeit zu analysieren.
In diesem Beispiel laden Sie eine Klasse mit dem Namen "AppTest" und rufen zur Laufzeit jede ihrer Methoden auf.
1. AppTest.java
Diese Java-Klasse und ihre Methoden werden später zur Laufzeit aufgerufen
package com.example.reflection; public class AppTest{ private int counter; public void printIt(){ System.out.println("printIt() no param"); } public void printItString(String temp){ System.out.println("printIt() with param String : " + temp); } public void printItInt(int temp){ System.out.println("printIt() with param int : " + temp); } public void setCounter(int counter){ this.counter = counter; System.out.println("setCounter() set counter to : " + counter); } public void printCounter(){ System.out.println("printCounter() : " + this.counter); } }
2. ReflectApp.java
Diese Klasse lädt die Klasse "AppTest" und ruft ihre Methoden zur Laufzeit auf. Die Codes und Kommentare sind selbsterklärend.
package com.example.reflection; import java.lang.reflect.Method; public class ReflectApp{ public static void main(String[] args) { //no paramater Class noparams[] = {}; //String parameter Class[] paramString = new Class[1]; paramString[0] = String.class; //int parameter Class[] paramInt = new Class[1]; paramInt[0] = Integer.TYPE; try{ //load the AppTest at runtime Class cls = Class.forName("com.example.reflection.AppTest"); Object obj = cls.newInstance(); //call the printIt method Method method = cls.getDeclaredMethod("printIt", noparams); method.invoke(obj, null); //call the printItString method, pass a String param method = cls.getDeclaredMethod("printItString", paramString); method.invoke(obj, new String("example")); //call the printItInt method, pass a int param method = cls.getDeclaredMethod("printItInt", paramInt); method.invoke(obj, 123); //call the setCounter method, pass a int param method = cls.getDeclaredMethod("setCounter", paramInt); method.invoke(obj, 999); //call the printCounter method method = cls.getDeclaredMethod("printCounter", noparams); method.invoke(obj, null); }catch(Exception ex){ ex.printStackTrace(); } } }
3. Ausgabe
printIt() no param printIt() with param String : example printIt() with param int : 123 printCounter() : 999