Java Beanutils使copyproperties在不同类型的嵌套属性上工作
我有两个具有镜面反射属性的bean,包括不同类型的嵌套属性,即Java Beanutils使copyproperties在不同类型的嵌套属性上工作,java,apache-commons,apache-commons-beanutils,Java,Apache Commons,Apache Commons Beanutils,我有两个具有镜面反射属性的bean,包括不同类型的嵌套属性,即 BeanDTO { NestedBeanDTO nestedProperty; } Bean { NestedBean nestedProperty; } NestedBeanDTO { String name; } NestedBean { String name; } 现在我想要apachecommons BeanUtils.copyProperties(Bean, BeanDTO)
BeanDTO {
NestedBeanDTO nestedProperty;
}
Bean {
NestedBean nestedProperty;
}
NestedBeanDTO {
String name;
}
NestedBean {
String name;
}
现在我想要apachecommons
BeanUtils.copyProperties(Bean, BeanDTO)
复制所有bean的属性,包括嵌套的属性,因为内部也有相同的属性,但我遇到了以下错误:
argument type mismatch - had objects of type "NestedBeanDTO" but expected signature "NestedBean"
据我所知,可以通过ConverterUtils寄存器使用BeanutilsBean类配置转换器行为,但我不知道如何配置
有什么建议吗
编辑
使用ConverterUtils.register()解决:
将使用NestedBean.name自动解析NestedBeanDTO.name属性您是否可以添加代码您正在尝试的内容我无法复制此问题/我已添加一些代码并更新了错误详细信息
private static class CustomBeanConverter implements Converter {
@Override
public <T> T convert(Class<T> aClass, Object o) {
Object output = null;
try {
output = aClass.getDeclaredConstructor().newInstance();
BeanUtils.copyProperties(output, o);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException | InstantiationException e) {
e.printStackTrace();
}
return (T)output;
}
}
BeanUtilsBean.getInstance().getConvertUtils().register(new CustomBeanConverter(), NestedBean.class);
BeanUtils.copyProperties(Bean, BeanDTO)