- 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;
- }
- }
复制代码 |