我正在使用Lombok的构建器。要为某些变量分配默认值,我尝试使用@Builder.Default注释。但问题是,使用上述注释后,我无法通过构建器初始化该值,因为编译器说在通过构建器初始化变量时不能解析该方法。因此,我要寻求的基本上是一种设置默认值并仍然能够在通过构建器启动时进行覆盖的方法。
我的团队一直在努力解决在某些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
,以允许仅使用构建器创建此类的实例。
@Value
注解很好地配合使用,可以使对象不可变。在上面的例子中,添加@Value
注解后,您可以删除字段上的final标记,并生成getter方法。 - James Render