我有一个具有多个函数的类,例如 to 。对于这些 getter,我希望将字母替换为一个(随机示例)。获取器可以返回空值。getgetF1getF10"x""a"
到目前为止,这就是我所做的,它的工作原理,有没有办法得到比这更好看的东西?
public void foo(final MyObject bar) {
Optional.of(bar).map(MyObject::getF1).ifPresent(s -> bar.setF1(s.replaceAll("x", "a"));
Optional.of(bar).map(MyObject::getF2).ifPresent(s -> bar.setF2(s.replaceAll("x", "a")));
...
Optional.of(bar).map(MyObject::getF10).ifPresent(s -> bar.setF10(s.replaceAll("x", "a")));
}
我在想这样的事情,使用一个列表,显然,这个代码是错误的,但你明白了:
public void foo(final MyObject bar) {
List<Function> func = new ArrayList<Function>();
func.addAll(Arrays.asList(MyObject::getF1, MyObject::getF2, ..., MyObject::getF10));
Optional.of(bar).map(func).ifPresent(s -> func(s.replaceAll("x", "a"));
}
也许使用流可以完成工作?
月关宝盒
慕斯709654
相关分类