本文主要是介绍Introspector总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 内容回顾:Class、Method 、Field、Constructor、Introspector、PropertyDescription
/*使用内省 api操作bean的属性;
Introspector 类为通过工具学习有关受目标 Java Bean 支持的属性、事件和方法的知识提供了一个标准方法。
对于这三种信息,Introspector 将分别分析 bean 的类和超类,寻找显式或隐式信息,
使用这些信息构建一个全面描述目标 bean 的 BeanInfo 对象
*/
public class IntrospectorDemo {
@Test //得到bean的所有属性!!!
public void test1() throws Exception
{
//在 Java Bean 上进行内省,了解其所有属性、公开的方法和事件。
BeanInfo info=Introspector.getBeanInfo(Person.class,Object.class);//得到bean自己的属性;
//获得 beans PropertyDescriptor(描述 Java Bean 通过一对存储器方法导出的一个属性).
PropertyDescriptor[] pds=info.getPropertyDescriptors();
//获取bean自身的所有的属性!!
for(PropertyDescriptor pd:pds)
{
System.out.println(pd.getName());
}
}
@Test //操作bean的指定属性:age;
public void test2() throws Exception
{
Person p=new Person();//创建操作类的对象;
PropertyDescriptor pd=new PropertyDescriptor("age",Person.class);
//得到属性的写方法,为属性赋值;
Method method=pd.getWriteMethod();
method.invoke(p,34);
//获取属性的值。
//System.out.println(p.getAge()); //1,传统方式
method=pd.getReadMethod(); //2,public int getAge()
System.out.println(pd.getPropertyType());//获取类的属性;
//getAge()无参数;
Object obj= method.invoke(p,null);
if(obj instanceof Integer){
int age=(Integer) obj;
System.out.println(age);
}
}
}
class Person //javabean
{
private String name; //字段;
private int password;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
这篇关于Introspector总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!