How To Use Reflection To Call Java Method At Runtime
Reflection is a very useful approach to deal with the Java class at runtime, it can be use to load the Java class, call its methods or analysis the class at runtime.
In this example, you will load a class called “AppTest” and call each of its methods at runtime.
1.AppTest.java
package com.javanotes2all.java.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
This class will load the “AppTest” class and call its methods at runtime. The codes and comments are self-explanatory
package com.javanotes2all.java.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.javanotes2all.java.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("mkyong")); //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(); } } }
0 comments:
Post a Comment