有没有办法我可以在一行中编写方法中的下面的代码,代码没有问题但只是好奇
public MyObject getObj(String name){
MyObj myObj = PoolInstance.get(name);
myObj.setFound(true);
return myObj;
}
出于某种原因,我无法修改PoolInstance。
您可以将逻辑封装在setter中,返回对象的实例本身:
class MyObject {
private boolean found;
public MyObject withFound(boolean isFound) {
this.found = isFound;
return this;
}
}
客户代码:
public MyObject getObj(String name){
return PoolInstance.get(name).withFound(true);
}
还可以考虑使用GoF Builder
设计模式来获得更加惯用和灵活的代码:Builder pattern example with explanation
简短回答NO,
原因:
第一个直觉是
return PoolInstance.get(name).setFound(true);
但这不正确,因为setFound不返回MyObj。
尽管不是那么可读,但它可以使用流。看起来像:
public MyObject getObj(String name){
return Stream.of(PoolInstance.get(name)).peek(o -> o.setFound(true)).findFirst().get();
}