首页 > 试题广场 >

写一个Map转换成JavaBean的工具类方法,实现如下ma

[问答题]

写一个Map转换成JavaBean的工具类方法,实现如下mapToObject方法(使用Java反射,不允许使用第三方类库)

public static <T> T mapToObject(Map<String, Object> map, Class<T> beanClass){ 

}


参考答案中 field.set(obj, map.get(field.getName()));
直接拿出来设置得时候,如果字段为基本类型,而map中没有这个字段的值 就会报错
java.lang.IllegalArgumentException: Can not set int field People.id to null value
发表于 2021-02-02 11:25:19 回复(0)
    public static <T> T mapToObject(Map<String, Object> map, Class<T> beanClass) throws Exception{
        if (map == null || map.isEmpty()) return null;
        T t = (T)beanClass.getDeclaredConstructor().newInstance();
        for (String name : map.keySet()) {
            Object param = map.get(name);
            Field field = beanClass.getDeclaredField(name);
            field.setAccessible(true);
            field.set(t, param);
        }
        return t;
    }
发表于 2022-07-12 21:05:00 回复(0)
/**
     *  写一个Map转换成JavaBean的工具类方法,实现如下mapToObject方法(使用Java反射,不允许使用第三方类库)
     */
    public static <T> T mapToObject(Map<String, Object> map, Class<T> beanClass) throws IllegalAccessException {
       if (null == map){
           return null;
       }
        try {
            T object = beanClass.newInstance();
            Field[] fields = object.getClass().getDeclaredFields();
            if (null != fields && fields.length > 0){
                for (Field field : fields){
                    // 不能是静态类型或final类型
                    int mod = field.getModifiers();
                    if (Modifier.isStatic(mod) || Modifier.isFinal(mod)){
                        System.out.println("===========");
                        continue;
                    }
                    field.setAccessible(true);// 访问私有属性
                    field.set(object, map.get(field.getName()));
                }
            }
            return object;
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return null;
    }


编辑于 2021-08-02 17:44:13 回复(0)