我有两个这样的类(class):

@Builder
public class Parent {
    final int a;
    final int b;

    public class static ParentBuilder {
        public ParentBuilder setAllTo(final int value) {
           return a(value).b(value);
        }
    }
}

public class Child extends Parent {
   final in c;

   @Builder(builderMethodName = "childBuilder")
   public Child(final int a, final int b, final int c) {
      super(a, b);
      this.c = c;
   }
}

我的类(class)正在成长,并且有越来越多的领域。
这是使用@SuperBuilder的原因。但是,如何添加定制的构建器方法?

剂量工作的方式相同。我尝试过这种方式:
@SuperBuilder
public abstract class Parent { //yes, I want a abstract parent
    final int a;
    final int b;

    public class static ParentBuilder {
        public ParentBuilder setAllTo(final int value) {
           return a(value).b(value);
        }
    }
}


@SuperBuilder
public class Child extends Parent {
   final in c;

}

编辑

这还不可能。当我尝试以相同的方式进行操作时,出现了一个异常:@SuperBuilder does not support customized builders. Use @Builder instead.覆盖是一个内部类,如下所示:
public abstract static class ParentBuilder<C extends ParentBuilder, B extends Parent.ParentBuilder<C, B>> {
    // custom imlementations here
}

最佳答案

我最近尝试使用Lombok 1.18.8和IntelliJ自定义@SuperBuilder,并且效果很好。我遇到的唯一问题是,我失去了在SuperBuilder-toBuilder中使用@SuperBuilder(toBuilder=true)标志的能力。
下面是重写@SuperBuilder方法的代码。

public static abstract class ChildBuilder<C extends Child, B extends ChildBuilder<C, B>>
        extends ParentBuilder<C, B> {

    private LocalDate date;

    public B date(String dateStr) {
        this.date = LocalDate.parse(dateStr);
        return self();
    }
}
我在这里添加了我的工作代码:Customize SuperBuilder in Lombok

09-26 03:54