JAVA内省(Introspector)

'ɪntrəspektɜ

什么是Java内省:内省是Java语言对Bean类属性、事件的一种缺省处理方法。

Java内省的作用:一般在开发框架时,当需要操作一个JavaBean时,如果一直用反射来操作,显得很麻烦;所以sun公司开发一套API专门来用来操作JavaBean

package com.javax.iong.javabean0301;

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

}

package com.javax.iong.javabean0301;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

import org.junit.Test;

public class Test1 {

	@Test
	public void tes1() throws Exception {
		Class<?> cl = Class.forName("com.javax.iong.javabean0301.Person");
		// 在bean上进行内省
		BeanInfo beaninfo = Introspector.getBeanInfo(cl, Object.class);
		PropertyDescriptor[] pro = beaninfo.getPropertyDescriptors();
		Person p = new Person();
		System.out.print("Person的属性有:");
		for (PropertyDescriptor pr : pro) {
			System.out.print(pr.getName() + " ");
		}
		System.out.println("");
		for (PropertyDescriptor pr : pro) {
			// 获取beal的set方法
			Method writeme = pr.getWriteMethod();
			if (pr.getName().equals("name")) {
				// 执行方法
				writeme.invoke(p, "xiong");
			}
			if (pr.getName().equals("age")) {
				writeme.invoke(p, 23);
			}
			// 获取beal的get方法
			Method method = pr.getReadMethod();
			System.out.print(method.invoke(p) + " ");

		}
	}

	@Test
	public void test2() throws Exception {
		PropertyDescriptor pro = new PropertyDescriptor("name", Person.class);
		Person preson=new Person();
		Method  method=pro.getWriteMethod();
		method.invoke(preson, "xiong");
		System.out.println(pro.getReadMethod().invoke(preson));
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哥、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值