通过反射可以根据类名和方法名动态地去调用相应的类和方法(就好像一个人去搬箱子一样,箱子里是什么我不知道,我只知道把它搬过来就行了。)hibernate的延迟加载和spring里的AOP都是反射机制。
import java.lang.reflect.Method;
public class Test{
public static void main(String [] args){
try{
//实例化类
People obj=(People)Class.forName("People").newInstance();
Method method=null;
//调用setName(String name)方法
method=obj.getClass().getMethod("setName",new Class[]{String.class});
method.invoke(obj,new Object[]{"princess"});
//调用getName()方法
method=obj.getClass().getMethod("getName");
String result=(String)method.invoke(obj);
System.out.println("result is : "+result);
}catch(Exception e){
}
System.out.println("...ok...");
}
}
class People {
private String name;
public People(){
name="no name";
}
public People(String name){
this.name=name;
}
//--get set methods--
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}