AndroidのAPIにラムダでオブジェクトをラップする方法<24

Addev:

私はすべての項目の上に演技コレクションを反復処理します。

Collection<Listener> listeners = ....

interface Listener {

    void onEventReceived();

    void onShutDown();
}

コードは次のようになります。

void notifyShutdown() {
    for(Listener listener:listeners){
        listener.onShutDown();
    }
}

私はヘルパーインターフェースを宣言したように、java8のラムダをつかむしたいです:

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

私の質問はあります。Do Iは、インターフェイスに宣言する必要がWrapHelperAndroidのAPI <24で、この目的のために、既存のクラスがあるの自分を。

感謝

maheryhaja:

はい、あなたはAPI <24はjava.utilのから消費者をサポートしていませんので、ごインターフェースWrapHelperを宣言する必要があります

Altoughは、使用することができますLighweightストリーム-APIライブラリサプライヤー、消費者およびオプションのようにすぐに使用できるクラスとインタフェースを提供しますウィッヒを。それはほとんどJava8の新機能と同じように機能し、API <24で正常に動作します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=190257&siteId=1