我正在使用龙目岛的生成器。要将默认值分配给我尝试使用的某些变量

@ Builder.Default

但是问题是,在使用上面的注释时,我不再能够通过构建器初始化该值,因为编译器说在尝试通过构建器初始化变量时无法解析方法。

因此,从本质上讲,我正在寻找一种设置默认值并且仍然能够在通过builder进行初始化时覆盖的方法。

最佳答案

我的团队一直在努力使此注释无法在某些IDE中使用。我们的解决方法是定义一个带有@Builder批注的构造函数,该批注将在未提供值的情况下设置默认值。例如:

public class ExampleClass {

    private final OtherClass otherClassField;

    @Builder
    public ExampleClass(OtherClass otherClass) {
        // if otherClass is null, use a default value
        otherClassField = otherClass != null ? otherClass : new OtherClass();
    }
}

需要注意的是,如果您的类具有基本类型字段,则需要将基本包装类型用于构造函数参数,以便能够继续使用null值指示回退为默认值。

您也可以将构造函数访问级别更改为private,以允许仅使用生成器创建此类的实例。

10-08 07:28