反射调用 java bean的set和get方法

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,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八、后台与数据库(IVX 快速开发教程)

八、后台与数据库 在 iVX 中 数据库 作为数据存储仓库&#xff0c;通过 数据库 可以永久性存储存储数据&#xff0c;而 后台服务 起到数据传输作用&#xff0c;将 数据库 的数据传输到前台页面之中&#xff0c;页面再使用这些数据。 文章目录八、后台与数据库8.1.1 数据库添加…

Android Studio开发环境搭建准备

Android Studio 是一个Android开发环境&#xff0c;基于IntelliJ IDEA. 类似 Eclipse ADT&#xff0c;Android Studio 提供了集成的 Android 开发工具用于开发和调试。 Android Studio开发环境搭建前&#xff0c;我们需要进行安装前的准备工作&#xff0c;本篇以在Windows 7平台…

九、二手信息站点后台完成 (IVX 快速开发教程)

九、二手信息站点后台完成 了解完后台实现后&#xff0c;我们开始为该二手商品站点完成完成后台制作。 文章目录九、二手信息站点后台完成9.1.1 完成二手信息站点注册功能9.1.2 完成二手信息站点登录功能9.1.3 完成商品发布功能9.1.4 首页信息获取9.1.5 详情页内容9.1.1 完成二…

爬虫是什么?起什么作用?

【爬虫】 如果把互联网比作一张大的蜘蛛网&#xff0c;数据便是放于蜘蛛网的各个节点&#xff0c;而爬虫就是一只小蜘蛛&#xff0c;沿着网络抓取自己得猎物&#xff08;数据&#xff09;。这种解释可能更容易理解&#xff0c;官网的&#xff0c;就是下面这个。 爬虫是一种自动…

oneproxy检测主从复制同步延迟

Q:为什么要实现读写分离延迟检测&#xff1f; A:就好比你在ATM机存钱&#xff0c;你老婆收到短信后乐呵呵的拿网银APP查看&#xff0c;结果钱没过来。其实钱已经到账了&#xff0c;只是查询的ATM机节点钱还没过来。所以我们dba要监控数据&#xff0c;一旦发现钱没有复制到另一A…

.NET 分表分库动态化处理

介绍本期主角:ShardingCore 一款ef-core下高性能、轻量级针对分表分库读写分离的解决方案&#xff0c;具有零依赖、零学习成本、零业务代码入侵我不是efcore怎么办这边肯定有小伙伴要问有没有不是efcore的,我这边很确信的和你讲有并且适应所有的ADO.NET包括sqlhelperShardingCo…

addEventListener 的事件函数的传递【转载】

addEventListener 参数如下&#xff1a; addEventListener(type, listener[, useCapture]); type&#xff0c;事件名称listener&#xff0c;事件处理器useCapture&#xff0c;是否捕获一直把 listener 记成是响应函数&#xff0c;function 类型。相信很多人也是这么理解的。多数…

Android之elevation实现阴影效果

1 需求 需要控件实现阴影效果 2 实现 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"andr…

十、小程序实战 (IVX 快速开发教程)

十、小程序实战 使用小程序完成一个二手信息站点与 WebApp 实现流程类型&#xff0c;只是部分内容使用了微信小程序特有的组件&#xff0c;例如微信登录与 WebApp 略有差别&#xff0c;其它逻辑实现较为类似。我们先制作页面&#xff0c;之后再实现功能。 由于之前已经完成了…

源代码下载 第六章 注解式控制器详解

2019独角兽企业重金招聘Python工程师标准>>> 源代码请到附件中下载。 其他下载&#xff1a; 跟着开涛学SpringMVC 第一章源代码下载 第二章 Spring MVC入门 源代码下载 Controller接口控制器详解 源代码下载 源码下载——第四章 Controller接口控制器详解——跟着开…

WPF|快速添加新手引导功能(支持MVVM)

阅读导航前言案例一案例二案例三&#xff08;本文介绍的方式&#xff09;如何使用&#xff1f;控件如何开发的&#xff1f;总结1. 前言案例一站长分享过 眾尋 大佬的一篇 WPF 简易新手引导 一文&#xff0c;新手引导的效果挺不错的&#xff0c;如下图&#xff1a;该文给出的代码…

三、界面介绍(IVX快速手册)

三、集成开发环境界面介绍 通过本节你将了解 iVX 在线集成开发环境 界面&#xff0c;快速建立对 在线集成开发环境 的认识。 文章目录三、集成开发环境界面介绍3.1 界面区域3.2 舞台3.3 组件工具栏3.4 对象树/素材面板3.5 属性面板3.6 菜单面板3.7 逻辑工具面板3.8 辅助工具3.…

Android studio之提示Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46

1、错误提示如下 Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46 Show in Project Structure dialog Affected Modules: app2、解决办法 在project的build.gradle里面加入 maven { url https://jitpack.io }

【VB测绘程序设计】第二章 VB测绘程序基础

第一节 数据类型 VB中提供了以下11中基本的数据类型: 一、数值型 二、字符串 三、日期型 1.界面设计 2. 代码 <

React-引领未来的用户界面开发框架-读书笔记(六)

第12章 服务端渲染 想让搜索引擎抓取到你的站点&#xff0c;服务端渲染这一步不可或缺&#xff0c;服务端渲染还可以提升站点的性能&#xff0c;因为在加载JavaScript脚本的同时&#xff0c;浏览器就可以进行页面渲染。 React的虚拟DOM是其可被用于服务端渲染的关键。首先每个R…

TrimPath - Js模板引擎

当页面中引用template.js文件之后&#xff0c;脚本将创建一个TrimPath对象供你使用。 parseDOMTemplate(elementId,optionalDocument)  //获得模板字符串代码 得到页面中Id为elementId的DOM组件的InnerHTML&#xff0c;将其解析成一个模板&#xff0c;这个返回一个templateOb…

一、iVX简介(IVX 快速开发教程)

一、iVX简介 通过本节你将对 iVX 有一个大致的认识&#xff0c;并且了解 iVX 能够做些什么&#xff0c;有哪一些优势&#xff0c;这将帮助你更好的上手 iVX 进行应用的开发&#xff0c;初步了解 iVX 的强大之处。 文章目录一、iVX简介1.1 iVX 是什么&#xff1f;1.2 iVX适合怎…

WPF效果第一百八十六篇之又玩ListBox

大周末的接着上一篇玩耍TreeView,这二天又再次去玩耍ListBox;毕竟是我的最爱,没办法就喜欢玩耍他;闲话也不多扯了,直接看咱们最终效果:2、原来一直ItemTemplate,这次直接ListBoxItem的Template:<Setter Property"Template"><Setter.Value><ControlTem…