黑马程序员技术交流社区
标题:
求解
[打印本页]
作者:
黑马张国礼
时间:
2012-6-11 21:37
标题:
求解
ReflectPoint pt1=new ReflectPoint(3,5);
String propertyName="x";
PropertyDescriptor pd=new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX=pd.getReadMethod();
Object retval=methodGetX.invoke(pt1);
System.out.println(retval);
既然已经知道类中存在了getX()方法,那么直接使用
System.out.println(pt1.getX());多直接啊,为什么还要用这么些复杂的方法呢???
作者:
赵兵锋
时间:
2012-6-12 19:23
public class Main{
public static void main(String[] args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException {
ReflectPoint pt1=new ReflectPoint(3);
String propertyName="x";
PropertyDescriptor pd=new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX=pd.getReadMethod();//这里返回的是默认的getX方法。
Object retval=methodGetX.invoke(pt1);//执行默认getX方法。
System.out.println(retval);//输出3
Method m = pt1.getClass().getMethod("myGetFuncation",null);//获取类中myGetFuncation方法的Method对象
pd.setReadMethod(m);//将自定义的方法设置为x的默认读取方法
Method anotherMethodGetX=pd.getReadMethod();//再次取得x的默认获取方法,只是此时的默认获取方法已被我们改变了。
Object retval2=anotherMethodGetX.invoke(pt1);
System.out.println(retval2);//输出103
}
}
class ReflectPoint {
int x;
public ReflectPoint(int x){
this.x = x;
}
public int getX() {//默认x的获取方法
return x;
}
public void setX(int x) {
this.x = x;
}
public int myGetFuncation() {//自定义一个也可获取x值的方法,但是会把x加上100后返回。
return x+100;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2