版本说明
- commons-beanutils:1.9.3
- fastjson:1.2.58
场景
使用BeanUtils.copyProperties()拷贝Map/JSONObject时,无法正常拷贝属性类型为枚举或POJO。此时,需要使用ConvertUtils注册一个自定义的转换类。
实验
实验准备:
- Student类(拷贝对象),Student中有三个属性name/sex/grade分别为String/enum/POJO类型(包含属性比较方法propertiesEquals());
- Sex类,枚举类型,定义了FEMAL/MALE;
- Grade类,简单对象,包含三个属性。
定义如下:
1 | /** |
实验对比
- Java对象之间的拷贝
- BeanMap拷贝到Java对象
- JSONObject对象拷贝到Java对象
- HashMap对象拷贝到Java对象
测试代码
1 | Grade g = new Grade(100, 99, 98); |
完整代码
1 | package io.github.eericzeng; |
题外话
BeanUtils性能堪忧,可参考某大佬写的对比博客,见参考资料。