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