今天碰到一个关于反射的例子,写出一个简单的测试代码,作为记录。
MyClass是被测试类,代码也很简单
测试结果:
my calss() is created
mycalss.test() is runing
package reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//反射获得指定名称的类进行加载
Class cls = Class.forName("reflect.MyClass");
Class[] para = new Class[]{String.class, String.class};
//获得该类的构造方法对象,参数为空
Constructor constructor = cls.getConstructor();
//通过构造方法获得一个实例化对象,注意参数也是为空
MyClass instance1 = (MyClass) constructor.newInstance();
//调用方法,显示具体内容
instance1.test();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MyClass是被测试类,代码也很简单
/**
*
*/
package reflect;
/**
* @author Administrator
*
*/
public class MyClass {
/**
*
*/
public MyClass() {
// TODO Auto-generated constructor stub
System.out.println("my calss() is created");
}
public MyClass(String a, String b){
System.out.println("my calss(a,b) is created");
}
public void test(){
System.out.println("mycalss.test() is runing");
}
}
测试结果:
my calss() is created
mycalss.test() is runing