重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍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内省的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!