对JavaBean的内省操作——综合案例
2018-01-29 00:00
375 查看
一、概述
1、直接new一个PropertyDescriptor对象的方式来让大家了解JavaBean API的价值,先用一段代码读取JavaBean的属性,然后再用一段代码设置JavaBean的属性(方式1)(推荐)2、用eclipse将读取属性和设置属性的流水帐代码分别抽取成方法
① 只要调用这个方法,并给这个方法传递了一个对象、属性名和设置值,它就能完成属性修改的功能
② 得到BeanInfo最好采用“obj.getClass()”方式,而不要采用“类名.class”方式,这样程序更通用
3、采用遍历BeanInfo的所有属性方式来查找和设置某个RefectPoint对象的x属性。在程序中把一个类当作JavaBean来看,就是调用IntroSpector.getBeanInfo方法, 得到的BeanInfo对象封装了把这个类当作JavaBean看的结果信息。(方式2)
二、代码说明
IntroSpectorTest.java
package staticimport.reflect.introspector; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /*** * * 对JavaBean的简单内省操作 * * @author Liu * */ public class IntroSpectorTest { public static void main(String[] args) throws Exception { ReflectPoint reflectPoint = new ReflectPoint(3,4); String propertyName = "xaxis"; Object retVal = getProperty(reflectPoint, propertyName); System.out.println(retVal); Object val = 10; setProperty(reflectPoint, propertyName, val); System.out.println(reflectPoint.getXaxis()); } //调用JavaBean的api设置属性值 private static void setProperty(ReflectPoint reflectPoint, String propertyName, Object val) throws IntrospectionException, IllegalAccessException, InvocationTargetException { PropertyDescriptor propertyDescriptor2 = new PropertyDescriptor(propertyName, reflectPoint.getClass()); Method methodSet = propertyDescriptor2.getWriteMethod(); methodSet.invoke(reflectPoint,val); } //调用JavaBean的api读取属性值 private static Object getProperty(Object obj, String propertyName) throws IntrospectionException, IllegalAccessException, InvocationTargetException { //快速简洁方式 /*PropertyDescriptor propertyDescriptor = new PropertyDescriptor(propertyName, obj.getClass()); Method methodGet = propertyDescriptor.getReadMethod(); Object retVal = methodGet.invoke(obj); return retVal;*/ //复杂方式(采用遍历BeanInfo的所有属性方式来查找和设置某个RefectPoint对象的x属性) BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for(PropertyDescriptor propertyDescriptor : propertyDescriptors){ if(propertyDescriptor.getName().equals(propertyName)){ return propertyDescriptor.getReadMethod().invoke(obj); } } return null; } }
相关文章推荐
- Excel函数/图表应用技巧与综合案例操作
- JavaBean的简单内省操作
- 【内省】introspector操作JavaBean
- java基础巩固系列(八):对javabean的内省操作
- JavaBean内省:认识JavaBean与内省、对JavaBean的内省操作、Beanutils工具包
- java基础增强---JavaBean的内省操作
- 有关javaBean的简单内省操作
- Java学习笔记之<反射、内省、BeanUtils包操作JavaBean的对比>
- 对javabean的内省操作
- ——javaBean的讲解,及内省操作
- JavaBean的复杂内省操作
- 内省操作javabean的属性
- Word/Excel文秘/行政办公应用技巧与综合案例操作
- 黑马程序员-内省、操作JavaBean工具类
- JavaBean及其内省操作
- Excel财务报表制作技巧与综合案例操作
- 黑马程序员-----JavaBean的内省操作
- 对javaBean简单的内省操作
- 内省.BeanUtils操作JavaBean
- 内省操作javabean的属性