背景
平时,我们不定义构造器时,会自动创建一个无参的构造器。
当我们提供了任意有参构造器后,将不再自动创建无参构造器。
问题
为了方便创建对象并同时赋值,使用了全参构造器的注解@NoArgsConstructor
。
使用集合对象属性批量复制BeanUtil.copyPropertiesList(sourceList, MyClass.class)
时,发现复制结果为空。
分析原因,是因为内部使用targertObject.newInstance()
创建对象,然后基于反射,根据属性名完成赋值。由于没有无参构造器,导致创建对象失败,结果就是null
。
问题解决
避免使用@AllArgsConstructor
,或者同时使用@NoArgsConstructor
。