70


One of my POJOs has a Boolean object field to permit NULLS in the database (a requirement). Is it possible to use the @Data Lombok annotation at class level yet override the getter for the Boolean field? The default it generates is getXXX method for the Boolean field. I wish to override it as isXXX()?

Thanks,
Paddy

4

5 に答える 5

17

Boolean Xフィールドをからに切り替えるとboolean X、ロンボクがゲッターメソッドを生成すると思いますisX()

于 2016-03-18T14:36:44.853 に答える
8

質問が古いことは知っていますが、今後の参考のためにこれを残します。

クラスで Getter/Setter をオーバーライドするには、2 つのオプションがあります。

1つは、最初のオプションの応答からの回答です

もう 1 つのオプションは、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ます。

于 2018-05-02T08:41:56.493 に答える
2

ブールフィールドの名前は何ですか? ロンボクのドキュメントによると:

デフォルトの getter は単純にフィールドを返し、フィールドが foo という名前の場合は getFoo という名前になります (フィールドの型が boolean の場合は isFoo です)。

lombok は、ブール値フィールドに isXXX という名前のゲッターを生成します

于 2013-08-09T03:54:29.457 に答える
1

ロンボクのドキュメントから:

特別な AccessLevel.NONE アクセス レベルを使用して、任意のフィールドの getter/setter 生成をいつでも手動で無効にすることができます。これにより、クラスの @Getter、@Setter、または @Data アノテーションの動作をオーバーライドできます。

于 2020-01-15T08:38:55.847 に答える