本帖最后由 尹丽峰 于 2013-5-17 10:08 编辑
【黑马云青年为您解答】
Java反射机制主要提供以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法。
只要涉及到框架开发反射用的频率很高
下面经典案例
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Admin {
public Admin(){
}
private String id = "";
public String getId() {
System.out.print(id);
return id;
}
public void setId(String id) {
this.id = id;
}
public static void main(String[] args)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
String str="com.spring.event.Admin";
Class c=Class.forName(str);
Object obj=c.newInstance();
// 这里是里设置属性的值
Method m = c.getMethod("setId",new Class[]{Class.forName("java.lang.String")});
m.invoke(obj,new Object[]{"penghao122"});
// 这里是里获取属性的值
m = c.getMethod("getId",new Class[]{});
m.invoke(obj,new Object []{});
}
}
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Admin {
public Admin(){
}
private String id = "";
public String getId() {
System.out.print(id);
return id;
}
public void setId(String id) {
this.id = id;
}
public static void main(String[] args)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
String str="com.spring.event.Admin";
Class c=Class.forName(str);
Object obj=c.newInstance();
// 这里是里设置属性的值
Method m = c.getMethod("setId",new Class[]{Class.forName("java.lang.String")});
m.invoke(obj,new Object[]{"penghao122"});
// 这里是里获取属性的值
m = c.getMethod("getId",new Class[]{});
m.invoke(obj,new Object []{});
}
}
|