Есть ли способ заставить lombok создать объект в случае нуля при использовании аннотации @Getter @Setter?
Имея простой класс A, который содержит класс B, есть ли аннотация lombok, которая создаст новый экземпляр класса b в случае нуля?
public class A {
@Getter
@Setter
private B b;
}
1 ответ
Боюсь, что эта функция не существует. Документация перечисляет несколько ключей конфигурации для аннотаций, но нужной вам функциональности нет в списке.
Кто-то недавно просил что-то подобное на странице Lombok Github:
Я хотел бы эту функцию для этого сценария:
@Getter(lazy = true) private List<String> foo = new ArrayList<>();
генерировать что-то вроде этого:private List<String> foo; public List<String> getFoo() { if (this.foo == null) { this.foo == new ArrayList<>(); } return this.foo; }
Конечно, он может использовать двойную проверку блокировки или AtomicReference, но суть здесь в том, что я предпочел бы получить пустой список, а не нулевую ссылку. Например, это распространенная идиома в классах JAXB, которые приятно уменьшить в размере с помощью Lombok.
Таким образом, функция еще не реализована. Если бы я был вами, я бы не использовал аннотации в этих случаях, а вместо этого создал бы методы, которые вы хотели бы вручную.