Java高级特性 内省

Java內省在计算机编程中定义:通过Java內省可以获取bean是什么,能做什么。我个人理解:java语言对Bean类属性、事件一种缺省的处理方法;例如类中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则(但你最好还是要搞清楚),这些 API 存放于包 java.beans 中。 

一般的做法是通过类 Introspector 来获取某个对象的 BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后我们就可以通过反射机制来调用这些方法。下面介绍一个简单的例子:

BeanInfo beanInfo=Introspector.getBeanInfo(clazz.getClass());
PropertyDescriptor[] pds=beanInfo.getPropertyDescriptors();

for(PropertyDescriptor pd:pds){
if(propertyName.equals(pd.getName())){
                Method methodSet=pd.getWriteMethod();//set方法
                methodSet.invoke(clazz, value);

Method methodGet=pd.getReadMethod();    //get方法            retVal=methodGet.invoke(clazz);   
            }
        }



內省的本质是:获取bean类的get/set方法,获取或者赋值属性。核心是使用java反射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值