博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射调用 java bean的set和get方法
阅读量:5951 次
发布时间:2019-06-19

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

v一、使用java.beans.PropertyDescriptor

import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class PropertyUtil {        private static final String SET_PREFIX = "set";    private static final String IS_PREFIX = "is";    private static final String GET_PREFIX = "get";        public static PropertyDescriptor getPropertyDescriptor(Class
clazz, String propertyName) {
//根据需求,定制 自己的get和set方法 Method setMethod = null; Method getMethod = null; PropertyDescriptor pd = null; try { Field field = clazz.getDeclaredField(propertyName);// 根据字段名来获取字段 if (field != null) { // 构建方法的后缀 String methodEnd = propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1); setMethod = clazz.getDeclaredMethod(SET_PREFIX + methodEnd, new Class[] { field.getType() }); // 构建get 方法 getMethod = clazz.getDeclaredMethod(GET_PREFIX + methodEnd, new Class[] {}); // 构建一个属性描述器 把对应属性 propertyName 的 get 和 set 方法保存到属性描述器中 pd = new PropertyDescriptor(propertyName, getMethod, setMethod); } } catch (Exception ex) { ex.printStackTrace(); } return pd; } public static PropertyDescriptor getPropertyDescriptor2(Class
clazz, String propertyName) {
//使用 PropertyDescriptor 提供的 get和set方法 try { return new PropertyDescriptor(propertyName, clazz); } catch (IntrospectionException e) { e.printStackTrace(); } return null; } public static void setProperty(Object obj, String propertyName, Object value) { Class
clazz = obj.getClass();// 获取对象的类型 PropertyDescriptor pd = getPropertyDescriptor(clazz, propertyName);// 获取 // clazz // 类型中的 // propertyName // 的属性描述器 Method setMethod = pd.getWriteMethod();// 从属性描述器中获取 set 方法 try { setMethod.invoke(obj, new Object[] { value });// 调用 set // 方法将传入的value值保存属性中去 } catch (Exception e) { e.printStackTrace(); } } public static Object getProperty(Object obj, String propertyName) { Class
clazz = obj.getClass();// 获取对象的类型 PropertyDescriptor pd = getPropertyDescriptor(clazz, propertyName);// 获取 // clazz // 类型中的 // propertyName // 的属性描述器 Method getMethod = pd.getReadMethod();// 从属性描述器中获取 get 方法 Object value = null; try { value = getMethod.invoke(clazz, new Object[] {});// 调用方法获取方法的返回值 } catch (Exception e) { e.printStackTrace(); } return value;// 返回值 } }

v二、使用收藏的一个工具类 BeanHelper

  

v三、获取一个类每个属性的 PropertyDescriptor

 org.springframework.beans.BeanUtils

  PropertyDescriptor[] pds = BeanUtils.getPropertyDescriptors(mappedClass);

  使用请参考 

本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/6778223.html,如需转载请自行联系原作者
你可能感兴趣的文章
lombok
查看>>
Dev-FAT-UAT-PRO
查看>>
Maven, IntellJ Idea 配置注意点
查看>>
Android开发学习总结(五)——Android应用目录结构分析(转)
查看>>
观察者模式
查看>>
python操作excel (openpyxl)
查看>>
[PHP]PHP rpc框架hprose测试
查看>>
网络安全系列之十八 MySQL基本操作(PHP注入基础)
查看>>
Java实现MongoDB的日期(Date)分组功能
查看>>
《从零开始学Swift》学习笔记(Day 39)——构造函数重载
查看>>
疯狂ios讲义之实例:通过旋转手势旋转图片
查看>>
软件定义重划边界——IT就是把复杂东西简单化
查看>>
Exchange Server 2016管理系列课件22.通讯组概述
查看>>
exchange 2013设置分层通讯簿(HAB)
查看>>
Puppet基础篇5-如何建立master和agent之间的认证关系
查看>>
OSSIM5 自定义安装
查看>>
《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
查看>>
把握现在才是最重要的
查看>>
Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
查看>>
前端开发者常用的9个JavaScript图表库
查看>>