拷贝方式
拷贝方式 | 类型 | 原理 | 备注 |
---|---|---|---|
Object.clone() | 默认 浅拷贝,可以自定义实现深拷贝 | 对象内存复制 | |
constructor | 可以实现深拷贝 | 自定义实现 | |
BeanUtil.copyProperties() | 浅拷贝 | 利用 getter/setter 实现属性拷贝 | 反射,spring util |
CollectionUtils.clone() | 深拷贝 | 本质上是 序列化&反序列 | apache commons |
序列化&反序列化 | 深拷贝 | 序列化&反序列化 | fastjson/jackson/hessian |
性能分析
结论:两种常见的序列化方式 竟然都比 BeanUtil.copyProperties 性能高,fastjson 性能较 beanCopy 高出约7倍,jackson 性能较 beanCopy 高出约3.5倍。BeanUtils 采用 spring 框架自带的,apache commons 性能更低