BeanUtils.copyProperties(serviceConfiguration, configurationForm)
对于名称相同的所有情况,只需将一个类的所有bean属性复制到另一个类。
因为两个类都包含
parameters
财产,
BeanUtils
只会复制值。
这正是在你的结果中发生的事情,突然里面的参数
ServiceConfiguration
包含的列表
ConfigurationParameterForm
物体。
这是因为复制只在一个层次上进行,也是因为在运行时没有任何东西阻止列表包含与声明中指定的对象不同的类的对象。
例如:
public class Dog {
@Override
public String toString() {
return "I'm a dog";
}
}
public class Cat {
@Override
public String toString() {
return "I'm a cat";
}
}
public static void main(String[] args) {
List dogs = new ArrayList<>();
dogs.add(new Dog());
addCat(dogs);
System.out.println(dogs);
}
public static void addCat(List cats) {
cats.add(new Cat());
}
运行上述代码将导致:
[I'm a dog, I'm a cat]
一个可能的解决方案是添加您自己的映射方法,该方法将使用getter和setter从一个类映射到另一个类,但是您还需要一个来自:
配置参数窗体
到
Parameter