我想迭代作用于每个项目的集合。
Collection<Listener> listeners = ....
interface Listener {
void onEventReceived();
void onShutDown();
}
代码可以是:
void notifyShutdown() {
for(Listener listener:listeners){
listener.onShutDown();
}
}
我想捕获 java8 lambdas 所以我声明了一个辅助接口(interface):
interface WrapHelper<T> {
void performAction(T item);
}
和一个通知方法
public void notifyListeners(WrapHelper<Listener> listenerAction) {
for (Listener listener : listeners) {
listenerAction.performAction(listener);
}
}
所以我可以声明这样的方法:
public void notifyEventReceived() {
notifyListeners(listener -> listener.onEventReceived());
}
public void notifyShutDown() {
notifyListeners(listener -> listener.onShutDown());
}
我的问题是:我是否需要自己声明接口(interface) WrapHelper
,因为在 Android API <24 中已经存在用于此目的的类。
最佳答案
是的,您需要声明接口(interface) WrapHelper,因为 API<24 不支持来自 java.util 的消费者
不过,您可以使用 Lighweight-Stream-API library wich 提供了现成的类和接口(interface),如 Supplier、Consumer 和 Optional。它的工作原理与 Java8 新特性几乎相同,并且在 API < 24 中运行良好。
关于java - 如何在 Android API <24 中将对象包装在 lambda 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51170821/