//为了让程序员更好的操作javabean的属性,JDK提供了一套API用来访问某个属性的setter或getter方法。这就是内省 //内省(Introspector)是java语言对javabean类属性,方法和事件的一种标准处理方式。 //内省访问javabean有两种方法。 //设置javaBean属性值。 public static void main(String[] args) throws Exception { //1.方式一 /*//实例化一个person对象 Person beanObj = new Person(); //通过Introspector对象获取Person对象的BeanInfo对象 BeanInfo beanInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass()); //通过BeanInfoObject的getPropertyDescriptors方法,的到Bean中的所有属性信息。 propertyDescriptors = beanInfoObject.getPropertyDescriptors(); //便利属性信息,通过getName的到属性名,通过getPropertyType得到属性类型对象。 for (int i = 0; i <propertyDescriptors.length; i++) { String name = propertyDescriptors[i].getName(); Class<?> propertyType = propertyDescriptors[i].getPropertyType(); System.out.println(name+"("+propertyType.getName()+")"); }*/ //方式二 直接通过PropertyDescriptor对象,获取属性信息。 //创建person类的对象 Person p = new Person(); //通过属性描述器,获得那么属性描述信息。 PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass()); //获取name属性的setter方法。 Method methodName = pd.getWriteMethod(); //调用setter方法。设置name值 methodName.invoke(p,"小米"); System.out.println(p);
//相应的person类
private String name; private int age; public Person(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString(){ return this.name+":"+this.age; }
时间: 2024-10-13 22:46:44