博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PropertyDescriptor
阅读量:6158 次
发布时间:2019-06-21

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

hot3.png

 今天下午在看公司的代码的时候看到这样一段,

PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法:

     1.  getReadMethod(),获得用于读取属性值的方法
     2.  getWriteMethod(),获得用于写入属性值的方法

最初感觉这个方法没有具体的意义 ,既然我已经存在get ,set 方法 ,为何要通过 PropertyDescriptor 反射来设置,经过分析之后,很多情况 ,我们不仅仅要对一个对象 进行设置,可能会对多个不同类型的对象进行设置,如此我们就可以利用具体的方法名与PropertyDescriptor反射机制进行处理,具体代码如下  

public static void setWithConflictDetection(Object target, String propertyName, String param) {		PropertyDescriptor pd = null;		try {			pd = new PropertyDescriptor(propertyName, target.getClass());		} catch (IntrospectionException e) {			e.printStackTrace();			throw new InvalidParameterException("No such property: " + propertyName);		}		Method methodGet = pd.getReadMethod();		Method methodSet = pd.getWriteMethod();		try {			Object oldValue  = methodGet.invoke(target, new Object[]{});			if(oldValue!=null && param!=null && !oldValue.equals(param)) {				throw new InvalidParameterException(propertyName, oldValue+"", param);			}else if(param != null){				methodSet.invoke(target, param);			}		} catch (IllegalAccessException e) {			e.printStackTrace();		} catch (InvocationTargetException e) {			e.printStackTrace();		}	}

 

转载于:https://my.oschina.net/u/198077/blog/1603113

你可能感兴趣的文章
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>