中国文化之博大精深之内省还是内省,究竟他是读(xing)还是(sheng)呢,通过百度引擎貌似晓得,他是读(xing)。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、叶城网络推广、小程序制作、叶城网络营销、叶城企业策划、叶城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供叶城建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
下面我们就对内省做一下简单介绍:
1.内省是java语言对bean类属性、事件的一种处理方法
2.为什么要学内省?开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。
3.内省访问JavaBean属性的两种方式:
通过PropertyDescriptor类操作Bean的属性
通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
下面写一下测试代码
Java代码
- /*
- * 通过Introspector类获得Bean对象的 BeanInfo, 然后通过 BeanInfo 来获取属性的描述器(
- * PropertyDescriptor ) 通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,
- * 然后通过反射机制来调用这些方法。
- */
- @Test
- public void test() throws IntrospectionException, IllegalArgumentException,
- IllegalAccessException, InvocationTargetException {
- Student st = new Student();
- // 1、通过Introspector类获得Bean对象的 BeanInfo,
- BeanInfo entity = Introspector.getBeanInfo(Student.class);
- // 2、然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor )
- PropertyDescriptor pdrs[] = entity.getPropertyDescriptors();
- // 3、通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,
- for (PropertyDescriptor pd : pdrs) {
- // System.out.println(pd.getName());
- /*
- * System.out.println(pd.getShortDescription());
- * System.out.println(pd.getDisplayName());
- */
- if (pd.getName().equals("age")) { //age是什么类型?
- Method md = pd.getWriteMethod();
- md.invoke(st, 12);
- }
- }
- // System.out.println(st.getAge());
- }
bean类
Java代码
- package cn.csdn.Introspector;
- public class Student {
- private String name;
- private int age;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- private String email;
- public String getXxx(){
- return "Longmanfei";
- }
- }
分享名称:究竟是内省还是内省
转载来于:http://www.gawzjz.com/qtweb2/news47/27347.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联