使用 Lombok 更改 SuperBuilder 方法

Change SuperBuilder method with Lombok

我有一个class如下:

@Data
@SuperBuilder
@NoArgsConstructor
@JsonInclude(Include.NON_NULL)
public class CustomObject extends Parent<CustomObject> {

  ...

  @Accessors(
      chain = true,
      prefix = {"_"})
  @Builder.Default
  private Boolean _default = false;
}

这会生成一个带有 default() 方法的构建器,该方法由于是保留字而无法使用。有没有办法改变这种行为,以便生成器工作?

不幸的是,在这种情况下没有好的方法。 @Accessors 影响 getters、setters 和 builders,因为在绝大多数情况下这是你需要的。你不能只为建设者关闭它。

这意味着唯一的出路(除了重命名 _default 字段)是删除 @Accessors 并手动实现 getter 和 setter:

@Data
@SuperBuilder
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CustomObject {

    @Builder.Default
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private Boolean _default = false;

    public Boolean getDefault() {
        return _default;
    }

    public CustomObject setDefault(Boolean _default) {
        this._default = _default;
        return this;
    }
}