博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对JavaBean的内省操作——综合案例
阅读量:5845 次
发布时间:2019-06-18

本文共 2376 字,大约阅读时间需要 7 分钟。

hot3.png

一、概述

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

 

转载于:https://my.oschina.net/Howard2016/blog/1615158

你可能感兴趣的文章
NGUI的输入框制作(attach- input filed script的使用)
查看>>
Java二十三设计模式之-----桥接模式
查看>>
[异常笔记] zookeeper集群启动异常: Cannot open channel to 2 at election address ……
查看>>
mysql 03
查看>>
在dll中用DirectSound8同时播放多个wav文件不能发声
查看>>
1462 通往奥格瑞玛的道路
查看>>
windows系统下搭建私有nuget仓储服务器, 打包程序集并推送到私有nuget仓储服务器...
查看>>
IMU、INS、DGPS和POS
查看>>
NgDL:第三周:浅层NN
查看>>
OpenCV基于傅里叶变换进行文本的旋转校正
查看>>
谁分配、谁释放的原则需要goto
查看>>
C#中字符串的内存分配与驻留池
查看>>
PIX防火墙配置DHCP
查看>>
Zabbix 监控IIS性能实例讲解
查看>>
Centreon 安装部署指南
查看>>
利用ADMT进行Exchange跨域迁移之三:迁移Exchange用户邮箱
查看>>
tomcat + memcached session manager共享session
查看>>
linux中生成考核用的NTFS文件系统(历史版本)
查看>>
项目管理修炼之道之规划项目
查看>>
【翻译】在Ext JS应用程序中使用自定义图标
查看>>