Reflection 合并两个对象的值
我有一个复杂的java类,如下所示Reflection 合并两个对象的值,reflection,merge,java-8,Reflection,Merge,Java 8,我有一个复杂的java类,如下所示 Class FinalValue { List<Item> items; List<Option> options; Class Item/Option { String itemId/optionId; Type type; Rate rate; String currency; } Class Rate { Integer id; BigDecimal rateAmount; Boolean i
Class FinalValue {
List<Item> items;
List<Option> options;
Class Item/Option {
String itemId/optionId;
Type type;
Rate rate;
String currency;
}
Class Rate {
Integer id;
BigDecimal rateAmount;
Boolean isActive;
}
}
类最终值{
清单项目;
列出选项;
类别项目/选项{
字符串itemId/optionId;
类型;
比率;
字符串货币;
}
等级率{
整数id;
较大的小数位数;
布尔反作用;
}
}
我想用一些条件将listlist
的值合并为一个FinalValue
。大多数值将是相同的,即使它是列表,但如果任何值不同,则需要同时设置这两个值
我正在考虑使用for循环,比较每个内部元素,如果它们相同,则设置一次,如果它们不同,则添加所有可能的元素
有没有更好的方法来解决这个问题,而不是循环到每个级别并添加值 几个问题。。。合并操作应该合并什么?你说的更好是什么意思?更快?更优雅?您当前的方法是什么,请添加代码。我还没有编码,但当前方法用于循环,并在新对象中不断设置值。如果有不同的值,则同时设置它们。具体问题是什么?您可以这样做:
FinalValue=list.stream().reduce(new FinalValue(),FinalValue::merge)在FinalValue
类中,您应该定义merge
方法<代码>公共最终值合并(FinalValue FinalValue){返回新的最终值().items(FinalValue.getItems()).options(FinalValue.getOptions());}
和选项
可以这样做公共最终值选项(列表选项){this.option=Stream.concat(this.option.Stream()),options.stream()).collect(Collectors.toList());}
如果两个对象中相同项目的速率不同,谢谢。我想把两者合并。有了上述方法,怎么可能呢?