Lombok comment personnaliser getter pour Boolean object field?
Un de mes POJOs a un champ objet booléen pour permettre NULLS dans la base de données (une exigence). Est-il possible d'utiliser l'annotation @Data Lombok au niveau de la classe tout en outrepassant le getter pour le champ booléen? La méthode par défaut qu'il génère est la méthode getXXX pour le champ booléen. Je souhaite le remplacer comme isXXX()?
Merci,
Paddy
4 réponses
C'est un peu verbeux, mais vous pouvez fournir votre propre isXXX
, et ensuite utiliser AccessLevel.NONE
pour dire à Lombok de ne pas générer le getXXX
:
@Data
public class OneOfPaddysPojos {
// ... other fields ...
@Getter(AccessLevel.NONE) private Boolean XXX;
public Boolean isXXX() {
return XXX;
}
}
(Et bon, au moins il n'est pas tout à fait aussi verbeux que si vous n'utilisiez pas Lombok pour commencer!)
je pense que si vous passez votre champ d' Boolean X
boolean X
que lombok génère un getter isX()
méthode.
quel est le nom de champ booléen? selon l' lombok doc:
un getter par défaut renvoie simplement le champ, et s'appelle getFoo si le le champ est appelé foo (ou isFoo si le type du champ est booléen)
lombok générera getter avec le nom isXXX pour votre champ booléen
je sais que la question Est ancienne mais je vais laisser ceci pour des références futures.
vous avez deux options pour outrepasser un Getter/Setter dans votre classe.
On est la réponse de Première réponse à l'Option
l'autre option est de simplement définir la méthode getter/setter et lombok ne produira pas automatiquement la méthode spécifiée.
je l'ai testé moi-même et il semble bien fonctionner:
@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());
}
}
voici aussi une référence de l'équipe de développement de commentaires: Commentaire du développeur de Lombok
dans mon exemple j'utilise la fonctionnalité "override" pour un Collection
type, mais cela peut être utilisé pour tout autre type Boolean
dans votre cas.