【发布时间】:2019-09-20 23:53:29
【问题描述】:
我有很多地方需要获取一个对象,根据该对象的状态执行一些副作用,然后最终返回该对象。对于特定的类Foo,我可以写一个方法
public Foo perform(Consumer<Foo> sideEffect) {
sideEffect.accept(this);
return this;
}
很简单,但我不想为每个班级都重写它,而且我还希望它适用于不属于我的班级。我不能将此方法添加到 Object,并且我宁愿不创建返回参数的 Consumer 的子类。有没有更好的方法来做到这一点?
【问题讨论】:
-
创建一个静态方法 perform 接受你的对象和副作用?
-
我可以做到,但它与周围代码的“功能性” foo().bar().baz() 风格不太相符。
-
如果您的所有类都可以扩展一个公共基类,这可能会有所帮助:stackoverflow.com/questions/17164375/…
标签: java generics lambda java-8