其实,我也不太懂内省是什么。估计是将数据封装到对象当中那样子吧!等有时间再来详细了解它吧…
所以,我就直接甩代码吧:
package com.descriptor;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
/**
* Description:
* 内省
*
* @author lee
* */
public class DescriptorDemo {
/**
* Description:
* 使用属性描述器,获取对象的setter或getter方法
*
* */
public static void test1()throws Exception{
Person p = new Person();
//属性描述器
PropertyDescriptor descriptor = new PropertyDescriptor("id",Person.class);
//获取属性setter方法
Method setMethod = descriptor.getWriteMethod();
//获取属性个体特然方法
Method getMethod = descriptor.getReadMethod();
//调用setter方法设置id值
setMethod.invoke(p, 1);
System.out.println(p.getId());
}
/**
* Description:
* 获取所有属性描述器
*
* */
public static void test2()throws Exception {
//Intropect内省类
BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
//通过BeanInfo获取所有属性描述器
PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
//输出所有属性描述器
for(PropertyDescriptor descriptor:descriptors){
System.out.println(descriptor);
}
}
/**
* Description:
* 主方法
*
* */
public static void main(String[] args)throws Exception {
test1();
test2();
}
}
/**
* Description:
* 一个javabean类
*
* @author lee
* */
class Person{
private int id;
private String name;
/**
* Description:
* 默认构造器
*
* */
public Person(){}
//getter,setter方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
任性!不解释!(手动滑稽)