我们有一个方法,它接收类层次结构顶部的类的对象。它使用基于层次结构中某个位置的字段的条件,如果满足该条件,则它为构建器使用另一个字段,该字段也在层次结构中的某个位置,但位于从顶级开始的不同路径上。
public Optional<SomeType> create(final TopClassInHierarchy topClass) {
Optional<SomeType> someObject = Optional.empty();
if (someCondition.evaluate(getFieldOne(topClass))) {
someObject = Optional.of(new SomeType.Builder()
.withFieldTwo(getFieldTwo(topClass))
.build());
}
return someObject;
private FieldOne getFieldOne(TopClassInHierarchy topClass) { return topClass.getSomething()...getFieldOne();
private FieldTwo getFieldTwo(TopClassInHierarchy topClass) { return topClass.getSomethingElse()...getFieldTwo();
我们希望最好将其浓缩为一个语句,例如这样
SomeType.Builder builder = new SomeType.Builder();
Optional.of(topClass)
.map(this::getFieldOne)
.filter(someCondition::evaluate)
.map(this::getFieldTwo) //???
.ifPresent(builder::withFieldTwo);
然而,一旦我们将 topClass 映射到 fieldOne 以进行条件评估,之后我们似乎无法“退回”到 topClass 以将其映射到 fieldTwo 以供构建器使用。这是否可行?
幕布斯6054654
ITMISS
相关分类