Есть ли способ заставить 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.

Таким образом, функция еще не реализована. Если бы я был вами, я бы не использовал аннотации в этих случаях, а вместо этого создал бы методы, которые вы хотели бы вручную.

Другие вопросы по тегам