在一行中设置另一个 属性 后返回一个对象
Returning an Object after setting another property in a single line
有什么方法可以在方法中将下面的代码写在一行中,代码没有问题,只是好奇
public MyObject getObj(String name){
MyObj myObj = PoolInstance.get(name);
myObj.setFound(true);
return myObj;
}
出于某种原因,我无法修改 PoolInstance。
您可以将逻辑封装在 setter 中,即 returns 对象的实例本身:
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
简答否,
原因:
第一直觉是
return PoolInstance.get(name).setFound(true);
但这不 正确,因为 setFound 不 return MyObj。
虽然可读性不佳,但流是可能的。看起来像:
public MyObject getObj(String name){
return Stream.of(PoolInstance.get(name)).peek(o -> o.setFound(true)).findFirst().get();
}
有什么方法可以在方法中将下面的代码写在一行中,代码没有问题,只是好奇
public MyObject getObj(String name){
MyObj myObj = PoolInstance.get(name);
myObj.setFound(true);
return myObj;
}
出于某种原因,我无法修改 PoolInstance。
您可以将逻辑封装在 setter 中,即 returns 对象的实例本身:
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
简答否,
原因:
第一直觉是
return PoolInstance.get(name).setFound(true);
但这不 正确,因为 setFound 不 return MyObj。
虽然可读性不佳,但流是可能的。看起来像:
public MyObject getObj(String name){
return Stream.of(PoolInstance.get(name)).peek(o -> o.setFound(true)).findFirst().get();
}