Lombok how to customise getter for Boolean object field?
I know the question is old but I will leave this for future references.
You have two options to override a Getter/Setter in your class.
One is the answer from First Option response
The other option is to simply define the getter/setter method and lombok will not automatically produce the specified method.
I tested it myself and it seems to work fine:
@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());
}
}
Here is also a reference from the development team comments: Lombok's developer comment
In my example I'm using the "override" feature for a Collection
type but this can be used for any other type like Boolean
in your case.
It's a bit verbose, but you can provide your own isXXX
, and then use AccessLevel.NONE
to tell Lombok not to generate the getXXX
:
@Data
public class OneOfPaddysPojos {
// ... other fields ...
@Getter(AccessLevel.NONE)
private Boolean XXX;
public Boolean isXXX() {
return XXX;
}
}
(And hey, at least it's not quite as verbose as if you weren't using Lombok to begin with!)
I think if you switch your field from Boolean X
to boolean X
than lombok generate a getter isX()
method.