Java Lombok:省略@AllArgsConstructor中的一个字段?

Java Lombok:省略@AllArgsConstructor中的一个字段?,java,syntax,constructor,field,lombok,Java,Syntax,Constructor,Field,Lombok,如果我使用Lombok指定@allargsconstuctor,它将生成一个用于设置所有声明(非最终、非静态)字段的构造函数。 是否可以省略某个字段,并为所有其他字段保留生成的构造函数?否这是不可能的。有一个创建@someargsconstuctor的功能请求,您可以在其中指定相关字段的列表 充分披露:我是龙目岛项目的核心开发者之一。不,这是不可能的。有一个创建@someargsconstuctor的功能请求,您可以在其中指定相关字段的列表 充分披露:我是Lombok项目的核心开发人员之一。或者

如果我使用Lombok指定@allargsconstuctor,它将生成一个用于设置所有声明(非最终、非静态)字段的构造函数。
是否可以省略某个字段,并为所有其他字段保留生成的构造函数?

否这是不可能的。有一个创建
@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生成)也将与此字段一起生成:)