Как обернуть объект в лямбду в Android API <24 - PullRequest
0 голосов
/ 04 июля 2018

Я хочу перебрать коллекцию, действующую для каждого элемента.

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

У меня вопрос: нужно ли объявлять интерфейс WrapHelper Сам я уже существует для этой цели класс в API Android <24. </p>

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Да, вам нужно объявить свой интерфейс WrapHelper, поскольку API <24 не поддерживает Consumer from java.util </p>

Кроме того, вы можете использовать Lighweight-Stream-API библиотеку , которая предоставляет готовые к использованию классы и интерфейсы, такие как Supplier, Consumer и Optional. Он работает почти так же, как новые функции Java8, и отлично работает в API <24. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...