Подтвердить что ты не робот

Lombok как настроить getter для поля Boolean?


 В одном из моих POJO есть поле Boolean object, чтобы разрешить NULLS в базе данных (требование). Можно ли использовать аннотацию @Data Lombok на уровне класса, но переопределить getter для логического поля? По умолчанию он генерирует метод getXXX для логического поля. Я хочу переопределить его как isXXX()?

Спасибо,
Пэдди

4b9b3361

Ответ 1

Это немного подробный, но вы можете предоставить свой собственный isXXX, а затем использовать AccessLevel.NONE, чтобы сообщить Ломбоку не генерировать getXXX:

@Data
public class OneOfPaddysPojos {

    // ... other fields ...

    @Getter(AccessLevel.NONE) private Boolean XXX;

    public Boolean isXXX() {
        return XXX;
    }
}

(И эй, по крайней мере, это не так много, как если бы вы не использовали Ломбок для начала!)

Ответ 2

Я думаю, если вы переключите свое поле с Boolean X на Boolean X, чем на lombok, создайте метод getter isX().

Ответ 3

каково имя логического поля? в соответствии с lombok doc:

По умолчанию getter просто возвращает поле и называется getFoo, если поле называется foo (или isFoo, если тип поля является логическим)

lombok будет генерировать getter с именем isXXX для вашего логического поля

Ответ 4

Я знаю, что вопрос старый, но я оставлю это для будущих ссылок.

У вас есть два варианта переопределить Getter/Setter в вашем классе.

Одним из них является ответ из первого варианта ответа

Другой вариант - просто определить метод получения/установки, и lombok не будет автоматически генерировать указанный метод.

Я проверил это сам, и, кажется, работает нормально:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductResponse {

    private UUID id;
    private String supplierId;
    private String sku;
    private String name;
    private String brand;
    private String imgUrl;
    private String description;
    private BigDecimal price;
    private Float quantity;
    private String unit;
    //@Getter(AccessLevel.NONE) //This means @Data will not produce a getter for this field so have to explicitly define it
    private Set<ProductTag> tags;

    //Here we override @Data getter with a different getter (return is different type)
    public List<UUID> getTags() {
    return     tags.stream().map(ProductTag::getId).collect(Collectors.toList());
    }
}

Вот также ссылка от комментариев команды разработчиков: Комментарий разработчика Lombok

В моем примере я использую функцию "переопределить" для типа Collection но это может быть использовано для любого другого типа, такого как Boolean в вашем случае.

Ответ 5

Было бы очень приятно, если бы Lombok разрешил какую-то конфигурацию для формата getter/setter.