Обязательно Справочник по методам и лямбды облегчит чтение и обслуживание вашего кода:
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);
}
При этом миграция довольно проста и не привела к регрессу в моемслучай.