Lombok @Getter(lazy=true). Лень — это хорошо

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

Следующая статья — «Lombok @Log и его друзья».
Предыдущая статья — «Lombok @Synchronized — правильная синхронизация».

Новое в Lombok 0.10: Вы можете позволить Lombok генерировать метод получения значения, который будет вычислять значения один раз и кешировать его для последующего использования. Это может быть полезно, когда вычисление значения требует значительного процессорного времени, или когда значения занимает большой объём памяти. Чтобы использовать эту возможность, создайте приватное final поле, инициализируйте его выражением, сложным для вычисления, и добавьте к нему аннотацию @Getter(lazy=true). Поле будет скрыто от вашего остального кода, и выражение будет вычисляться только один раз, при первом вызове метода получения значения. Здесь нет специальных значений (то есть даже если результатом вычисления будет null, то результат всё равно будет кеширован), и ваше сложное вычисление не обязано быть потокобезопасным, так как Lombok заботится о блокировках.

С помощью Lombok

Чистая Java

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

Смотрите «Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры».

И дополнительный ключ конфигурации:

Lombok будет помечать использование @Getter(lazy=true) предупреждением или ошибкой, если настроено.

Примечания

Вы никогда не должны напрямую ссылаться на поле, всегда используйте метод получения значения, сгенерированный Lombok, потому что тип поля будет внутри AtomicReference. Не пытайтесь напрямую обращаться к этому AtomicReference. Если оно указывает на самого себя, то значение уже вычислено, и оно равно null. Если ссылка указывает на null, то значение ещё не было вычислено. Это поведение может быть изменено в будущих версиях. Поэтому всегда используйте getter (метод получения значения).

Другие аннотации Lombok, например @ToString, всегда вызывают метод получения значения, даже если вы используете doNotUseGetters=true.

 

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

Следующая статья — «Lombok @Log и его друзья».
Предыдущая статья — «Lombok @Synchronized — правильная синхронизация».

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

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