开发者

Java如何通过反射将map转换为实体对象

开发者 https://www.devze.com 2024-09-23 10:37 出处:网络 作者: 智航云科技
目录Java通过反射将map转换为实体对象以下是个简单demo的代码实现实体类总结Java通过反射将map转换为实体对象
目录
  • Java通过反射将map转换为实体对象
    • 以下是个简单demo的代码实现
    • 实体类
  • 总结

    Java通过反射将map转换为实体对象

    开发一个功能,需要将map的值赋予到实体对象中。其中一些固定数据是通过XML配置的,通过工具将XML转换为Map,作为单例对象供系统使用。然后我开发的接口最终返回的是实体对象,所以需要将map转为实体对象,也就是将map中存储的值赋予到实体对象上。

    我使用java的反射,然后通过for循环,将反射获取的实体类属性名称与map中的字段列名进行比对,如果一致则进行赋值。

    当然这里没有考虑值的数据类型,都是通过Object类型直接赋值的。

    我当前使用没有问题,如果有类型强烈要求的需要调整,增加类型判断后再进行赋值。

    以下是个简单demo的代码实现

    可参考:

    import org.apache.commons.lang3.StringUtils;
    
    import java.lang.reflect.Field;
    import java.util.HashMap;
    
    /**
     * 将map转换为 实体对象
     */
    public class MapToObjectUtils {
    
        public static voidjavascript main(String[] args) throws Exception {
    
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("id",1);
            map.put("name","张三");
            map.put("sex","男");
            map.put("age",18);
    
            // 使用反射
            User user = new User();
            Class<? extends User> aClass = user.getClass();
            // 获得某个类的所有声明的字段,即包括public、private和 proteced
            Field[] fields = aClass.getDeclaredFields();
            for (String key:map.keySet()){
                for(Field field:fields){
                    // 设置属性权限,设置为true 可屏蔽java语言的访问检测,使得私有对象也可被访问
                    field.setAccessible(true);
                    // 如果属性名称和map中的key一致,则可以进行赋值
                    http://www.devze.comif(StringUtils.equals(key,field.getName())){
                        field.set(user,map.get(key));
                    }
                android}
            }
            System.out.println(user.toString()php);
        }
    
    
    }
    

    实体类

    class User{
    
        private Integer id;
    
        /**
         * 姓名
         */
        private String name;
    
        /**
         * 性别
         */
        privajavascriptte String sex;
    
        /**
         * 年龄
         */
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }
    }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    没有了:下一篇

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号