我有两个接口 。
public interface Observer<T extends Observer<T>> {
List<T> getObserverChildren();
default void forEachObserver(Consumer<T> consumer) {
this.getObserverChildren().forEach(consumer);
}
}
和
public interface ChronoObserver extends Observer<ChronoObserver> {
default void updateTime(int seconds, int minutes) {
this.forEachObserver(observerChild -> observerChild.updateTime(seconds, minutes));
}
}
我想简化对 "forEachObserver "方法的调用,有一些类似的东西。
default void forEachObserver(TheType myMethod) { // myMethod may be any method like updateTime(...), updateDay(...), etc...
this.getObserverChildren().forEach(observerChild -> observerChild.myMethod);
}
这样我就可以用这样的东西来调用它。
this.forEachObserver(myMethod); // myMethod could be updateTime(seconds, minutes), updateDay(day), etc...
有什么方法可以简化它?有什么办法可以简化成这样?
不如这样吧。
void forEachObserver(Consumer<Observer> cons) { // myMethod may be any method like
// updateTime(...), updateDay(...),etc...
getObserverChildren().forEach((child)->cons.accept(child));
}
}
forEachObserver((t)->t.myMethod());
例如
forEachObserver((t)->t.updateTime(10,20));