现在的位置: 首页 > 综合 > 正文

内省操作javabean的属性

2017年11月09日 ⁄ 综合 ⁄ 共 995字 ⁄ 字号 评论关闭

有一个Person类

public class Person {
	private String name;
	private String password;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

操作如下

	public void test() throws Exception{
		//得到bean的属性并去除从Object继承来的属性
		BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);
		PropertyDescriptor[] pds = info.getPropertyDescriptors();
		for(PropertyDescriptor pd : pds){
			System.out.println(pd.getName());
		}
	}

//操作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, 45);
		System.out.println(p.getAge());
	}

//获取当前操作属性的类型

	public void test3() throws Exception{
		Person p = new Person();	
		PropertyDescriptor pd = new PropertyDescriptor("age",Person.class);
		
		System.out.println(pd.getPropertyType());
	}

注意要导入必要的包

抱歉!评论已关闭.