java.beans.Introspector类可以获取类属性,事件和方法,将这些信息封装到BeanInfo中
public static void main(String[] args) throws Throwable{
//获取bean信息
BeanInfo beanInfo = Introspector.getBeanInfo(B.class);
//获取bean的属性信息
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
//打印属性名称
System.out.println(propertyDescriptor.getName());
//打印属性的set方法
System.out.println(propertyDescriptor.getWriteMethod());
//发音属性的get方法
System.out.println(propertyDescriptor.getReadMethod());
}
}
这样就可以获取到成员属性的get/set方法了,就不用通过反射拼装方法名获取get/set方法了。
BeanInfo中还有bean的其他信息,可以查看api使用。
使用这个方法就可以实现bean copy了,spring中的BeanUtils.copyProperties方法就是使用这个方法实现的。
作者公众号