Java Lombok:省略@AllArgsConstructor中的一个字段?
如果我使用Lombok指定@allargsconstuctor,它将生成一个用于设置所有声明(非最终、非静态)字段的构造函数。Java Lombok:省略@AllArgsConstructor中的一个字段?,java,syntax,constructor,field,lombok,Java,Syntax,Constructor,Field,Lombok,如果我使用Lombok指定@allargsconstuctor,它将生成一个用于设置所有声明(非最终、非静态)字段的构造函数。 是否可以省略某个字段,并为所有其他字段保留生成的构造函数?否这是不可能的。有一个创建@someargsconstuctor的功能请求,您可以在其中指定相关字段的列表 充分披露:我是龙目岛项目的核心开发者之一。不,这是不可能的。有一个创建@someargsconstuctor的功能请求,您可以在其中指定相关字段的列表 充分披露:我是Lombok项目的核心开发人员之一。或者
是否可以省略某个字段,并为所有其他字段保留生成的构造函数?否这是不可能的。有一个创建
@someargsconstuctor
的功能请求,您可以在其中指定相关字段的列表
充分披露:我是龙目岛项目的核心开发者之一。不,这是不可能的。有一个创建
@someargsconstuctor
的功能请求,您可以在其中指定相关字段的列表
充分披露:我是Lombok项目的核心开发人员之一。或者,您可以使用
@RequiredArgsConstructor
。这将为所有@NonNull
或final
字段添加构造函数
查看或者,您可以使用
@RequiredArgsConstructor
。这将为所有@NonNull
或final
字段添加构造函数
查看在某些情况下,绕过它的一个好方法是使用
@Builder
在某些情况下绕过它的一个好方法是使用@Builder
以防有帮助,初始化的最终字段被排除
@AllArgsConstructor
class SomeClass {
final String s;
final int i;
final List<String> list = new ArrayList<>(); // excluded in constructor
}
var x = new SomeClass("hello", 1);
为了以防万一,初始化的final
字段被排除在外
@AllArgsConstructor
class SomeClass {
final String s;
final int i;
final List<String> list = new ArrayList<>(); // excluded in constructor
}
var x = new SomeClass("hello", 1);
那就不是一个全参数的ctor了。当然。也许龙目山有什么解决办法?那它就不是一个全参数的ctor了。当然。也许lombok有一些解决方案?@someargsconstuctor
在lombok 1.16.20中缺失了@someargsconstuctor在2020年可用吗?我希望在即将到来的2021年我们会看到这样的构造函数(看起来功能请求因我不理解的原因而被拒绝)参见关于@requiredargsconstuctor
的答案,由于该注释可能满足OP问题的大多数用例。@someargsconstuctor
在lombok 1.16.20中遗漏了@someargsconstuctor是否在2020年可用?我希望我们将在即将到来的2021年看到这样的构造函数(看起来该功能请求因我不理解的原因而被拒绝)参见答案关于@RequiredArgsConstructor
,因为该注释可能满足OP问题的大多数用例。这是一个很好的解决方法,使用@NonNull。但是请注意,这不适用于具有默认值的字段。这对我来说很好,我甚至用@Transient
标记了省略的字段,以避免java持久性层跟踪它,因为它在我的DAO中。这是一个很好的解决方法,使用@NonNull。但请注意,这对具有默认值的字段不起作用。这对我来说效果很好,我甚至用@Transient
标记了省略的字段,以避免它被java持久性层跟踪,因为它在我的DAO中。请看这里的示例:请看这里的示例:重要的补充:“已排除初始化的最终字段”->如果字段仅初始化但不是最终字段,则构造函数(由AllArgsConstructor生成)也将与此字段一起生成:)重要补充:“已初始化的最终字段被排除”->如果字段仅初始化但不是最终字段,则构造函数(由AllArgsConstructor生成)也将与此字段一起生成:)