java 反射 对象转map_通过类reflect反射进行对象和Map相互转换、获取指定属性对象值ObjectReflectUtils工具类代码示例...

一、前言

基于java.lang.reflect反向映射类对象映射工具类,实现了对象toMap方法转换java.util.Map、通过对象getProValue获取指定属性名称proName值、将Map转换为指定Class类对象mapToObj方法、通过对象属性映射getDeclaredFields转换getFieldsMap属性Map等方法处理。

二、代码示例package test;@b@@b@import java.beans.BeanInfo;@b@import java.beans.Introspector;@b@import java.beans.PropertyDescriptor;@b@import java.lang.reflect.Field;@b@import java.lang.reflect.InvocationTargetException;@b@import java.lang.reflect.Method;@b@import java.math.BigDecimal;@b@import java.util.Date;@b@import java.util.HashMap;@b@import java.util.Iterator;@b@import java.util.Map;@b@import java.util.Map.Entry;@b@import java.util.Set;@b@@b@public class ObjectReflectUtils {@b@@b@public  static  class  Student{@b@@b@private  String  name;@b@private  String  classId;@b@@b@public Student() {@b@super();@b@}@b@@b@public Student(String name, String classId) {@b@super();@b@this.name = name;@b@this.classId = classId;@b@}@b@@b@public String getName() {@b@return name;@b@}@b@public void setName(String name) {@b@this.name = name;@b@}@b@public String getClassId() {@b@return classId;@b@}@b@public void setClassId(String classId) {@b@this.classId = classId;@b@}@b@@b@@Override@b@public String toString() {@b@return "Student [getName()=" + getName() + ", getClassId()="@b@+ getClassId() + "]";@b@}@b@}  @b@@b@private static void putValueToDTO(Object act, Map map, Method method) throws NoSuchMethodException,@b@IllegalAccessException, InvocationTargetException {@b@if (method.getName().startsWith("get")) {// 取出所有get方法@b@String dtoMethodName = method.getName();@b@if (null != dtoMethodName && 3  toMap(Object obj) {@b@if (obj == null) {@b@return null;@b@}@b@try {@b@Map map = new HashMap();@b@Method[] methods = obj.getClass().getMethods();@b@if (null == methods || 0 >= methods.length) {@b@return null;@b@}@b@for (Method method : methods) {@b@putValueToDTO(obj, map, method);@b@}@b@return map;@b@} catch (Exception e) {@b@e.printStackTrace();@b@return null;@b@}@b@}@b@@b@/**@b@ * 通过属性名称获取其值@b@ * @param object@b@ * @param proName@b@ * @return@b@ * @throws Exception@b@ */@b@public static Object getProValue(Object object,String proName)throws Exception{@b@Method[] m = object.getClass().getMethods();@b@for(int i = 0;i  entry = (Entry) it.next();@b@if (entry.getKey().replaceAll("_", "").equalsIgnoreCase(cKey.replaceAll("_", ""))) {@b@return entry.getValue();@b@}@b@}@b@return null;@b@}@b@@b@/**@b@ * 将数值放到对象中@b@ * @param obj@b@ * @param descriptor@b@ * @param value@b@ * @throws IllegalAccessException@b@ * @throws InvocationTargetException@b@ */@b@private static void putValueByBigDecimal(Object obj, PropertyDescriptor descriptor, Object value)@b@throws IllegalAccessException, InvocationTargetException {@b@BigDecimal bd = (BigDecimal) value;@b@Object t = null;@b@if ("Integer".equals(descriptor.getPropertyType().getSimpleName())) {@b@t = bd.intValue();@b@} else if ("Float".equals(descriptor.getPropertyType().getSimpleName())) {@b@t = bd.floatValue();@b@} else if ("Double".equals(descriptor.getPropertyType().getSimpleName())) {@b@t = bd.doubleValue();@b@}@b@descriptor.getWriteMethod().invoke(obj, t);@b@}@b@@b@@b@/**@b@ * 将一个值放入javaBean中@b@ * @param map@b@ * @param obj@b@ * @param beanInfo@b@ */@b@@SuppressWarnings("rawtypes")@b@private static void putValueToJavaBean(Map map, Object obj, BeanInfo beanInfo) {@b@PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();@b@for (int i = 0; i 

控制台结果toMap_01:{classId=c01, name=小木人}@b@getProValue_02:小木人@b@mapToOb3_02:Student [getName()=小木人, getClassId()=c01]@b@getFieldsMap_03:{classId=c01, name=小木人}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值