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) {
}
}

最新文章

  1. c++防止客户端多开巧妙代码
  2. 1.ARC和非ARC文件共存
  3. raspbian 静态IP
  4. C# 自定义集合
  5. POJ3126Prime Path
  6. JAVA 原始国际化例子
  7. merge into Oracle里的 saveOrUapdate
  8. 关于wxFileSystemWatcher输出文件名的解决方法
  9. 第五章_JSTL
  10. 重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
  11. Java基本包装类型
  12. cassandra 3.x官方文档(6)---内部原理之存储引擎
  13. layui table分页 page为false时,limit问题
  14. Gym - 101848B Almost AP 暴力
  15. 全网最详细的一个超级好用的命令行工具【Cmder】的安装之后的一些配置(图文详解)
  16. Java实现数据库与eclipse的连接
  17. 洛谷P4551 最长异或路径
  18. JS forEach()与map() 用法(转载)
  19. linux 批量更改文件名 rename 命令
  20. iOS 11开发教程(二)编写第一个iOS 11应用

热门文章

  1. 【python驱动】python进行selenium测试时GeckoDriver放在什么地方?
  2. 事务控制语言(TCL)
  3. CSS系列之后代选择器、子选择器和相邻兄弟选择器
  4. AT1879 2 つの山札
  5. Linux 踢掉其他终端用户
  6. vue-cli 3.0脚手架搭建项目
  7. Android近场通信---NFC基础转)
  8. bat脚本的基本命令语法
  9. idea tomcat部署项目路径
  10. piecewise_construct存在的意义