我有两个对象可以对函数列表中的每个字段使用不同的函数逐个字段进行比较。
目标:compare(NeedCompare n1, NeedCompare n2)使用函数列表调用并获得
BigDecimal value = compareAmount(NeedCompare needCompare1, NeedCompare needCompare2)
.add(compareValue(NeedCompare needCompare1, NeedCompare needCompare2)
.add(compareName(NeedCompare needCompare1, NeedCompare needCompare2)
.add(compareCategory(NeedCompare needCompare1, NeedCompare needCompare2)))))
用流制作它会是完美的。
public class NeedCompare {
private BigDecimal category;
private String name;
private BigDecimal value;
private BigDecimal amount;
// The list is wrong and I don't know how to organize it
private List<Function<BigDecimal, NeedCompare>> functions = Arrays.asList(
(needCompare1, needCompare2) -> compareCategory(needCompare1, needCompare2),
(needCompare1, needCompare2) -> compareName(needCompare1, needCompare2),
(needCompare1, needCompare2) -> compareValue(needCompare1, needCompare2),
(needCompare1, needCompare2) -> …Run Code Online (Sandbox Code Playgroud)