主要用到的类/接口:java.beans.Introspector 、java.beans Interface BeanInfo、java.beans.PropertyDescriptor 等
除了属性描述器,还有其他的,例如FeatureDescriptor 直接已知子类:
BeanDescriptor
EventSetDescriptor
MethodDescriptor
ParameterDescriptor
PropertyDescriptor
使用PropertyDescriptor 操作代码示例:
// bean的所有属性
@Test
public void test1() throws Exception{
BeanInfo info = Introspector.getBeanInfo(Person.class);// 得到自己+父类的属性
BeanInfo info1 = Introspector.getBeanInfo(Person.class,Object.class);// 得到自己的属性
PropertyDescriptor[] pds = info.getPropertyDescriptors();
for(PropertyDescriptor pd : pds){
System.out.println(pd.getName());
}
}
// 操作bean的指定属性
@Test
public void test2() throws Exception{
Person p = new Person();
PropertyDescriptor pd = new PropertyDescriptor("name", Person.class);
Method m = pd.getWriteMethod();
m.invoke(p, "王五");
m = pd.getReadMethod();
String name = (String) m.invoke(p);
System.out.println(name);
}
// 获取属性的类型
@Test
public void test3() throws IntrospectionException{
Person p = new Person();
PropertyDescriptor pd = new PropertyDescriptor("height", Person.class);
System.out.println(pd.getPropertyType());
}