如何在Android API <24中将对象包装在lambda中

我想迭代一个集合,对每个项目进行操作。


Collection<Listener> listeners = ....


interface Listener {


    void onEventReceived();


    void onShutDown();

}

代码可以是:


void notifyShutdown() {

    for(Listener listener:listeners){

        listener.onShutDown();

    }

}

我想抓住java8 lambdas,所以我声明了一个辅助接口:


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());

}

我的问题是:我需要自己声明接口WrapHelper的是Android API <24中已经存在的为此目的的类。


MYYA
浏览 156回答 1
1回答

慕侠2389804

是的,您需要声明接口WrapHelper,因为API <24不支持java.util中的Consumer。总体而言,您可以使用Lighweight-Stream-API库,其中提供了现成的类和接口,例如Supplier,Consumer和Optional。它的工作原理与Java8的新功能几乎相同,并且在API <24中可以正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java