深拷贝的实现方法

1、我用Apeche包下的org.apache.commons.beanutils.BeanUtils.copyProperties,如果有BigDecaimal为空的时候会报错,非内置对象为空时都会报错

在这个方法里对原始对象的类型分别采用了不同的逻辑:

Map : 通过Map的Key与dest中的属性进行匹配,然后赋值;可以作为source但是不能作为target
DynaBean :DynaBean顾名思义,它是一种可以形成动态java bean的对象,也就是说它内部会存储属性名称、类型以及对应的值,在copy属性时也是将其内部的属性名称与dest对象的属性名称对应后赋值;
标准Java Bean :这个是我们主要进行分析的类型,它是标准的JavaBean对象;与前两者的差异只是在于对原始bean的取值的处理上.

2、Spring包下的org.springframework.beans.BeanUtils.copyProperties

BeanUtils 位于spring-beans模块中,暴露出静态方法copyProperties用以进行属性copy,每个copyProperties最终均调用一个私有静态方法实现属性copy:

3、实现 Cloneable 接口

4、转json

5、序列化

6、mapstruct属于硬编码 效率最高

但是写着比较痛苦,每个转换都得写一个类

MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。

你可能感兴趣的:(java)