var in Lambdas
miniJUGВ лямбдах можно будет использовать var.
В Java 10 появится локальный вывод типов, который позволит не указывать типы локальных переменных, разрешив заменить их ключевым словом var. Недавно вышел новый JEP-323, который предлагает распространить область применения var также на параметры лямбда-выражений. Если раньше можно было писать (x, y) → x + y или (int x, int y) → x + y, то сейчас будет доступна третья форма (var x, var y) → x + y. То есть неявно типизированную лямбду можно будет писать двумя способами: с var и без var. Обе они будут логически эквивалентными.
На новую форму будет наложены следующие ограничения:
Нельзя использовать форму с var без скобок: var x → x.foo()
Нельзя смешивать в одной лямбде параметры с var и без var: (var x, y) → x + y
Нельзя смешивать в одной лямбде параметры с var и типизированные параметры: (var x, int y) → x + y
Может возникнуть вопрос: если всегда можно использовать форму без var, то какой смысл использовать форму с var? На самом деле, вторая форма иногда может быть полезной. Например, она может пригодиться, когда нужно указать модификатор final или наложить аннотацию на параметр:
(final var x) → x + 1;
(@Nonnull var x) → x + 1;
На текущий момент неизвестно, попадёт ли JEP-323 в Java 10.
Подписаться на канал в Telegram
