本帖最后由 唐志海 于 2014-1-23 22:57 编辑
我调用了set方法把name改成了lisi。为什么再次调用get方法的时候name还是zhangsan呢??
- import java.beans.*;
- import java.lang.reflect.*;
- public class IntrospectorDemo
- {
- public static void main(String[] args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
- {
-
- Person p=new Person("zhangsan",14);
- String name="name";//求name属性的值
-
- PropertyDescriptor pd=new PropertyDescriptor(name, p.getClass());//得到属性描述
- System.out.println("-------调用get方法-------");
-
- Method methodgetName=pd.getReadMethod();//得到getName的方法
-
- Object value=methodgetName.invoke(p);//调用
-
- System.out.println("value="+value);
-
- System.out.println("-------调用set方法-------");
- Method methodsetName=pd.getWriteMethod();
- methodsetName.invoke(p,"lisi");
- System.out.println(p);
-
-
-
- //内省的第二种方式
- BeanInfo beaninfo=Introspector.getBeanInfo(p.getClass());
- PropertyDescriptor[] pds=beaninfo.getPropertyDescriptors();
- for(PropertyDescriptor pd2:pds)
- {
- if(pd2.getName().equals(name))
- {
- Method method=pd2.getReadMethod();
- Object value2=method.invoke(p);
- System.out.println("value2="+value);
- }
- }
-
-
-
-
- }
-
- }
复制代码
|
|