Какие-либо проблемы несовместимости переносят проект на Java 8? - PullRequest
0 голосов
/ 14 февраля 2019

У нас есть библиотека Android, которая используется клиентами в различных проектах.Большинство проектов имеют JellyBean или KitKat как минимальную версию SDK.Ключевой мотивацией является использование перехода от интерфейса к лямбда-выражениям и использование методов интерфейса по умолчанию там, где это невозможно.

Я прочитал руководство здесь https://developer.android.com/studio/write/java8-support, и обе функции не имеют минимальных уровней SDK.

Однако я хотел бы узнать от людей, которые прошли по тому же пути.С какими проблемами мы должны быть готовы столкнуться при обновлении библиотеки до 1.8

спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Обязательно Справочник по методам и лямбды облегчит чтение и обслуживание вашего кода:

Java 7:

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // do some stuff
        }

Java8:

    button.setOnClickListener((view) -> {
        // do some stuff
    }

Улучшенный вывод типа позволит убрать много приведений.Например:

TextView keyNameText = (TextView) findViewById(R.id.key_choice_key_name_text);

станет:

TextView keyNameText = findViewById(R.id.key_choice_key_name_text);

На первый взгляд что-то может показаться немного странным, если разработчики привыкли к классической Java8:

Хотя вы можете писать лямбда-выражения в своем коде (поскольку они являются частью функции языка Java 8), вы не можете использовать интерфейсы, обычно связанные с лямбда-выражениями, расположенные в java.util.function, то есть:

java.util.function.Function
java.util.function.Consumer

Поскольку они являются частью Java 8 Language API, для них требуется уровень API 24 или выше.Таким образом, если вам, например, понадобится java.util.function.Consumer, вам придется написать своего собственного потребителя:

public interface MyConsumer<T> {
    void accept(T t);
}

При этом миграция довольно проста и не привела к регрессу в моемслучай.

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