Java内省的示例分析

发布时间:2021-12-27 13:58:56 作者:小新
来源:亿速云 阅读:109

这篇文章主要介绍Java内省的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

下面我们就对内省做一下简单介绍:

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";         }     }

以上是“Java内省的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Ruby 反射和内省
  2. java封装的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:python如何通过深层神经网络生成音乐

下一篇:Android如何自定View实现滑动验证效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》