Map转对象工具类

Map转自定义Object–自定义工具类
在 springmvc 框架中:
参数接收–到封装进自定义实体类是可以借助框架自动完成的

但是如果我们没有使用框架,或者某些特定代码,或者并不在控制层中。此情况下我们也许无法使用借助 springmvc 提供好的注解或者代码工具。

此工具类是将不确定的 Map 对象转换封装进实体

Map<String, Object> – 自定义实体类
工具类如下:

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;

/**
 *
 * 〈map 转 自定义实体类 自定义工具类〉
 * @author Zy0116
 * @create 2018/11/16
 * @since 1.0.0
 */
public class Map2ObjectUtil {
  public static Object map2Object(Map<String, Object> map, Class<?> clazz) {

    if (map == null) {
        return null;
    }
    Object obj = null;
    try {
        obj = clazz.newInstance();

        // 获取自定义clazz类的全部字段
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {

            // 获取字段修饰符 需要排除静态及final修饰的字段
            int mod = field.getModifiers();
            if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
                continue;
            }
            // 强制设置为 true 即可以对字段值进行设置 防止一些方法阻碍我们对属性进行赋值
            field.setAccessible(true);

            // map 中如果包含字段名称的 key 则将对应的值放入 clazz 对象对应的字段上
            if (map.containsKey(field.getName())){
                field.set(obj, map.get(field.getName()));
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return obj;
}
}

说明几点:

  1. 之所以使用的是反射中 getDeclaredFields() 方法来获取全部字段
  2. 是因为我们不仅需要 public 修饰的成员,同样需要private等其它修饰符修饰的字段至于 static 静态修饰的,我们可以将它理解为常量(即从有它开始 就已经是固定不变的)。
  3. 关于 getModifiers() 方法,可能我们并不常用,此方法是获取调用字段在类中的修饰符,我们可以以此来判断如果处理字段。(返回的 int 类型值代表的具体修饰符 )。对照表请参考:对照表参考
OK,如果有同样需求的朋友可能直接使用此工具类来进行转换,方便些。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值