简单的Map转JavaBean

JavaBean存数据和Map存数据都是通过KV对的形式

JavaBean是属性名和属性值

Map是key值对应value值

都是唯一的属性名和唯一的key值

可以看成都是KV对形式

见如下演示-->

pojo类
public class Student {
    /**
     * 自定义字段
     */
    String name;
    int    age;
 
    /**
     * 无参构造器
     */
    public Student(){}
 
    /**
     * 定义有参构造器
     * 默认无参构造器失效
     */
    public Student(String aName,int aAge){
        name = aName;
        age  = aAge;
    }
 
    /**
     * 自定义方法
     */
    public void sayHi(){
        System.out.println("你们好,我是" + name);
        System.out.println("今年:" + age);
        System.out.println("-------------");
    }
 
    /**
     * setter 和 getter 方法
     */
    public void setName(String aName){
        name = aName;
    }
 
    public String getName(){
        return name;
    }
 
    public void setAge(int Aage){
        age = Aage;
    }
 
    public int getAge(){
        return age;
    }
 
    /**
     * 自定义方法2
     */
    public void learn(String course){
        System.out.println(name + "今天学习了"+course+"课") ;
    }
 
    /**
     * 覆盖toString方法
     * @return
     */
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

写个Map转JavaBean的工具类

/**
 * map和javabean的转换
 */
public class Map2JavaBeanUtils {
    // 无参构造
    public Map2JavaBeanUtils() {
    }

    // 返回一个bean对象用object来代替
    // 传参要指定类型,因为不知道bean对象Object是什么类型的
    // 对clz对象进行内省,获取bean的信息
    public static Object map2Bean(Map<Object,Object> map,Class clz) throws Exception{
        // 用字节码去创建对象
        Object obj = clz.newInstance();

        BeanInfo beanInfo = Introspector.getBeanInfo(clz, Object.class);
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        // 遍历
        for (PropertyDescriptor pd : propertyDescriptors) {
            String key = pd.getName();
            Method writeMethod = pd.getWriteMethod();
            // 在Map里面取拿想要的参数
            Object value = map.get(key);
            // 把值设置到value对象上
            writeMethod.invoke(obj,value);

        }
        return obj;
    }
}

测试类

public class Map2BeanTest {
    // 也可以通过mock的方式
    @Test
    public void test_utils() throws Exception {
        HashMap<Object, Object> map = new HashMap<>();
        map.put("name","古天乐");
        map.put("age",18);
        Object map2Bean = Map2JavaBeanUtils.map2Bean(map, Student.class);
        System.out.println(map2Bean);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值