Bean进行操作的相关工具方法
Bean进行操作的相关工具方法
/**
* <html>
* <body>
* <P> Copyright 1994 JsonInternational</p>
* <p> All rights reserved.</p>
* <p> Created on 19941115</p>
* <p> Created by Jason</p>
* </body>
* </html>
*/
package cn.ucaner.alpaca.framework.utils.bean; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; import org.apache.commons.beanutils.BeanMap; /**
* @Package:cn.ucaner.framework.utils
* @ClassName:BeanUtils
* @Description: <p> Bean进行操作的相关工具方法 </p>
* @Author: - Jason
* @CreatTime:2017年8月30日 下午2:15:47
* @Modify By:
* @ModifyTime:
* @Modify marker:
* @version V1.0
*/
public class BeanUtils { /**
* 将Bean对象转换成Map对象,将忽略掉值为null或size=0的属性
* @param obj 对象
* @return 若给定对象为null则返回size=0的map对象
*/
public static Map<String, Object> toMap(Object obj) {
Map<String, Object> map = new HashMap<String, Object>();
if (obj == null) {
return map;
}
BeanMap beanMap = new BeanMap(obj);
Iterator<String> it = beanMap.keyIterator();
while (it.hasNext()) {
String name = it.next();
Object value = beanMap.get(name);
// 转换时会将类名也转换成属性,此处去掉
if (value != null && !"class".equalsIgnoreCase(name)) {
map.put(name, value);
}
}
return map;
} /**
* 该方法将给定的所有对象参数列表转换合并生成一个Map,对于同名属性,依次由后面替换前面的对象属性
* @param objs 对象列表
* @return 对于值为null的对象将忽略掉
*/
public static Map<String, Object> toMap(Object... objs) {
Map<String, Object> map = new HashMap<String, Object>();
for (Object object : objs) {
if (object != null) {
map.putAll(toMap(object));
}
}
return map;
} /**
* 获取接口的泛型类型,如果不存在则返回null
* @param clazz
* @return
*/
public static Class<?> getGenericClass(Class<?> clazz) {
Type t = clazz.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] p = ( (ParameterizedType) t ).getActualTypeArguments();
return ( (Class<?>) p[0] );
}
return null;
} /**
* Test for Jason
*/
public static void main(String[] args) {
}
}
Bean进行操作的相关工具方法的更多相关文章
- 一些ES5的操作数组的方法
在ES5规范中新增了不少操作数组的方法,特此罗列一下以备使用 1. forEach循环 有点类似jQuery的each循环 [12,23,36,4,5].forEach(function(v,k){ ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- android操作线程各种方法解析
(一)刚开始学习android的时候我是这么写的 new Thread( new Runnable() { public void run() { myView.invalidate(); } }). ...
- C#操作内存读写方法的主要实现代码
C#操作内存读写方法是什么呢?让我们来看看具体的实例实现: using System.Runtime.InteropServices; using System.Text; publicclass F ...
- [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- VBS操作Excel常见方法
VBS操作Excel常见方法 作者: 字体:[增加 减小] 类型:转载 时间:2009-11-13我要评论 VBS控制Excel常见方法,需要的朋友可以参考下. dim oExcel,oWb,oShe ...
- php操作oracle的方法类集全
在网上开始找php中操作oracle的方法类~ 果然找到一个用php+oracle制作email表以及插入查询的教程,赶忙点开来看,从头到尾仔细的看了一遍,还没开始操作,便觉得收获很大了.地址在此:h ...
- 封装JDBC操作数据库的方法
自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...
- delphi操作文本文件的方法简介
delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程 Delphi同Object ...
随机推荐
- DEA Push rejected: Push to origin/master was rejected问题的解决方法
打开需要上传文件所在的文件夹 使用git bash git pull origin master –allow-unrelated-histories git push -u origin maste ...
- jmeter接口自动化和性能学习目录
目录黑色代表未完成的,绿色代表已完成的文章.目录的作用的为了引导和总结自己的学习,也是为了更好的分享给大家. 一.接口自动化 jmeter解决登录token获取 jmeter五种提取器 之 正则表达 ...
- webpack系列之安装(Mac OS)
1. webpack介绍,可参考Webpack中文文档 2. 安装webpack之前先需要安装npm,可参看NPM的使用介绍 3. 安装webpack,可参考Webpack入门教程 ========= ...
- hbase 监控指标项
名词解释 JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项 GC:Garbage Collection,垃圾收集,垃圾回收机制 指标项来源 主机名 u ...
- D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit
D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...
- mybatis or的用法
@Test public void test3(){ CaseSmallListExample caseSmallListExample = new CaseSmallListExample(); c ...
- 第06组 Beta版本演示
队名:福大帮 组长博客链接: https://www.cnblogs.com/mhq-mhq/p/12052263.html 作业博客 : https://edu.cnblogs.com/campus ...
- Python面向对象编程核心思想
原文地址https://blog.csdn.net/weixin_42134789/article/details/80194788 https://blog.csdn.net/happyjxt/ar ...
- Plupload的几个demo
Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...
- php中heredoc与nowdoc的使用方法、定界符<<<的使用方法
一.heredoc结构及用法 Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义.其结构中的变量将被替换,但在 heredoc 结构中含有复杂的 ...