黑马程序员技术交流社区
标题:
内省问题
[打印本页]
作者:
唐志海
时间:
2014-1-23 18:58
标题:
内省问题
本帖最后由 唐志海 于 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);
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2