Lombok val — беспроблемные final локальные переменные

Цикл статей «Project Lombok».

Следующая статья — «Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException».
Предыдущая статья — «».

Добавлено в версии 0.10. Вы можете использовать val в качестве типа при объявлении локальной переменной вместо указания реального типа. При этом тип будет выводиться из выражения инициализации. Локальная переменная будет сделана неизменяемой (final). Эта возможность работает в локальных переменных и для циклов foreach, но не для полей. Обязательно требуется наличие выражения инициализации.

Тип val — это реальный тип, и он находится как реальный класс в пакете lombok. Вы должны импортировать его для работы (или для использования lombok.val в качестве типа). Присутствие этого типа в объявлении локальной переменной добавляет ключевое слово final и копирует тип из выражения инициализации, который переопределяет поддельный тип val.

Эта опция на момент написания этого поста не работает нормально в NetBeans. Разработчики работают над исправлением этого.

С использованием Lombok:

Чистая Java:

Поддерживаемые ключи конфигурации

Мелкий шрифт

Для составных типов наиболее общий класс выводится, но не интерфейс. Например,  bool ? new HashSet() : new ArrayList()  — это выражение со составным типом, то есть результат одновременно AbstractCollection и Serializable. Здесь выведется тип AbstractCollection, так как он является классом, а Serializable — интерфейс.

В неоднозначных случаях, например когда выражение инициализации равно null, выводится тип java.lang.Object.

 

Цикл статей «Project Lombok».

Следующая статья — «Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException».
Предыдущая статья — «».

Lombok val — беспроблемные final локальные переменные: 2 комментария

  1. не увидел в скомпилированных классах final, просто на тип заменяет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *