Reflection loading class
Reflection: java. lang. reflect
Classes to be loaded:
package eg.fortest;public class WaitingforLoader {private String str;static{System.out.println("loading WaitingforLoader");}public WaitingforLoader() {str="empty";System.out.println("Constructor of WaitingforLoader without anything.");}public WaitingforLoader(String str) {this.str=str;System.out.println("Constructor of WaitingforLoader with "+str);}public void getStr(int i){System.out.println("str="+str);}}
Load the running class:
Package factory. classfactory; import java. lang. reflect. constructor; import java. lang. reflect. invocationTargetException; import java. lang. reflect. method; // import eg. fortest. waitingforLoader; public class LoadMyClass {public static void main (String [] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, expiration , InvocationTargetException {System. out. println ("Program start.");/*** class loading, linking, and initialization. */Class <?> Clazz = Class. forName ("eg. fortest. waitingforLoader ");/*** Object creation */Object myvar1 = clazz. newInstance (); Constructor cor = clazz. getConstructor (String. class); Object myvar2 = cor. newInstance ("string Parameter");/*** Method call */Method m = clazz. getMethod ("getStr", int. class); m. invoke (myvar2, 1 );}}
Output result:
Program start.
Loading WaitingforLoader
Constructor of WaitingforLoader without anything.
Constructor of WaitingforLoader with string Parameter
Str = string Parameter