标签:直接 利用 getter 成员变量 row throw this getname stat
JavaBean —般需遵循以下规范。
测试用javaBean
public class Person { private String name ; private int age ; public void say(){ } 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; } }
1.可以通过BeanInfo对象拿到JavaBean类中所有属性和方法的描述器
public static void main(String[] args) throws Exception { //获取BeanInfo对象,主要用于获取javaBean的属性描述器 BeanInfo beanInfo = Introspector.getBeanInfo(Person.class); //方法描述器 MethodDescriptor[] methodDescriptors = beanInfo.getMethodDescriptors(); //属性描述器 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); //测试对象 Person person = new Person(); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { //属性名 System.out.println("Person的属性:"+propertyDescriptor.getName()); if("name".equals(propertyDescriptor.getName())){ //属性读方法 Method readMethod = propertyDescriptor.getReadMethod(); //属性的写方法 Method writeMethod = propertyDescriptor.getWriteMethod(); writeMethod.invoke(person,"xiaoming"); System.out.println("person的name:"+readMethod.invoke(person)); Class<?> propertyType = propertyDescriptor.getPropertyType(); System.out.println("属性的类型:"+propertyType.getName()); } } }
2.直接获取某个属性的描述器
public static void main(String[] args) throws Exception { Person p = new Person(); //直接通过名称获取属性描述器 //获取name属性的描述器,方便我们直接操作p对象的name属性。 PropertyDescriptor descriptor = new PropertyDescriptor("name", Person.class); Method writeMethod = descriptor.getWriteMethod(); writeMethod.invoke(p,"nananan"); System.out.println("person对象name:"+descriptor.getReadMethod().invoke(p)); }
标签:直接 利用 getter 成员变量 row throw this getname stat
原文地址:https://www.cnblogs.com/liuboyuan/p/11120481.html