Какое преимущество дает возможность комментировать неявный лямбда-параметр?
Использование аннотаций в лямбда-выражении должно быть аналогично любому другому атрибуту не-лямбда-выражения. Это может быть использовать:
- Отражение и вывод некоторой информации об аннотированном объекте во время выполнения.
- также во время компиляции для отображения поведения, такого как сгенерированный исходный код или другие подсказки для инструментов
Вариант использования, указанный в JEP-323 (вновь заявляя о том, что я не уверен, что это именно то, чего вы ожидаете) -
(@Nonnull var x, @Nullable var y) -> x.process(y)
где аннотации могут использоваться библиотеками для определения значения проверки x
и y
. При этом вы знаете, что x.process(y)
, безусловно, не может выдать исключение NullPointerException , даже не установив явную нулевую проверку для x
сейчас, что совпадает с любым другим явно аннотированным не лямбда-параметром.
Примечательно, что это одно из преимуществ обеспечения единообразия разрешения var
для формальных параметров неявно типизированного лямбда-выражения.