我有很多地方需要获取对象,根据该对象的状态执行一些副作用,然后最终返回该对象。对于特定的Foo类,我可以编写一个方法
public Foo perform(Consumer<Foo> sideEffect) {
sideEffect.accept(this);
return this;
}
足够简单,但我不想不必为每个类都重写它,并且我也希望它适用于非我的类。我无法将此方法添加到Object中,而我不希望成为返回参数的Consumer的子类。有更好的方法吗?
答案 0 :(得分:4)
您可以编写一个通用实用程序方法,该方法接受Consumer<? super T>
和T
类型的参数并将其完成。注意,您必须在此处使用方法级别的泛型。看起来就是这样。
public static <T> T perform(Consumer<? super T> sideEffect, T obj) {
sideEffect.accept(obj);
return obj;
}