A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志海 中级黑马   /  2014-1-23 18:58  /  747 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志海 于 2014-1-23 22:57 编辑

我调用了set方法把name改成了lisi。为什么再次调用get方法的时候name还是zhangsan呢??
  1. import java.beans.*;
  2. import java.lang.reflect.*;

  3. public class IntrospectorDemo
  4. {
  5.         public static void main(String[] args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
  6.         {
  7.                
  8.                 Person p=new Person("zhangsan",14);
  9.                 String name="name";//求name属性的值
  10.                  
  11.                 PropertyDescriptor pd=new PropertyDescriptor(name, p.getClass());//得到属性描述
  12.                 System.out.println("-------调用get方法-------");
  13.                
  14.                 Method methodgetName=pd.getReadMethod();//得到getName的方法
  15.                
  16.                 Object value=methodgetName.invoke(p);//调用
  17.                
  18.                 System.out.println("value="+value);
  19.                
  20.                 System.out.println("-------调用set方法-------");
  21.                 Method methodsetName=pd.getWriteMethod();
  22.                 methodsetName.invoke(p,"lisi");
  23.                 System.out.println(p);
  24.             
  25.         
  26.                
  27.                 //内省的第二种方式
  28.                 BeanInfo beaninfo=Introspector.getBeanInfo(p.getClass());
  29.                 PropertyDescriptor[] pds=beaninfo.getPropertyDescriptors();
  30.                 for(PropertyDescriptor pd2:pds)
  31.                 {
  32.                         if(pd2.getName().equals(name))
  33.                         {
  34.                                 Method method=pd2.getReadMethod();
  35.                                 Object value2=method.invoke(p);
  36.                                 System.out.println("value2="+value);
  37.                         }
  38.                 }
  39.                
  40.                
  41.                
  42.                
  43.         }
  44.         
  45. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马