首先什么是内省呢,内省就是用来获得JavaBean的属性已经属性的get,set方法
那什么是JavaBean文件呢
JavaBean文件就是,有特定格式的一个java类。有如下的条件我们就能够称为一个JavaBean
1.有无参的构造方法
2.属性是私有的
3.对于私有的属性提供公共的get,set方法。
对于这样的文件我们就能够成为是一个JavaBean文件了。
那我们怎么获得它的属性和对应的get,set方法了?
这个我们需要引入一个 类 Introspector。这个类中有一个静态的方法
static BeanInfo getBeanInfo(Class<?> beanClass)
(在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件。)
这个方法返回一个BeanInfo类型的对象,获得了Bean文件的信息。我们在通过BeanInfo这个对象,调用它的方法 getPropertyDescriptors(),得到一个属性描述器。这个返回的是一个数组。数组中包含了所有的属性。
我们这里需要明确,一个Bean文件的属性,是由get,set确定的,并不是写了几个属性。
PropertyDescriptor[] getPropertyDescriptors()
我们接下来可以对得到的属性数组进行遍历,可以得到每一个属性。
然后我们通过,
属性.getReadMethod()就能获得get方法
属性.getWriteMethod()就能获得set方法
public void demo1() throws Exception{
// 获得了Bean的信息
BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
// 获得Bean的属性描述
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd:pds){
System.out.println(pd.getName());
pd.getReadMethod(); // 获得get方法
pd.getWriteMethod();// 获得set方法.
}
}