@AllArgsConstructor
class SomeClass {
final String s;
final int i;
final List<String> list = new ArrayList<>(); // excluded in constructor
}
var x = new SomeClass("hello", 1);
@RequiredArgsConstructor
class SomeClass2 {
final String s;
int i; // excluded because it's not final
final List<String> list = new ArrayList<>(); // excluded because it's initialized
}
var x = new SomeClass2("hello");
6条答案
按热度按时间ioekq8ef1#
不,这不可能。有一个创建
@SomeArgsConstructor
的功能请求,您可以在其中指定所涉及字段的列表。全面披露:我是Lombok项目的核心开发人员之一。
nwnhqdif2#
或者,您可以使用
@RequiredArgsConstructor
。这将为所有@NonNull
或final
字段添加一个构造函数。参见documentation
jckbn6z73#
为了以防万一,初始化的
final
字段被排除在外。这对于集合或其他可变类尤其有意义。
此解决方案可以与other solution here一起使用,关于使用
@RequiredArgsConstructor
:khbbv19g4#
在某些情况下,绕过它的好方法是使用
@Builder
oyjwcjzk5#
这可以使用Lombok中的两个注解来完成:
@RequiredArgsConstructor
@NonNull
请查看以下示例:
然后,您可以创建一个对象,如下所示:
s4n0splo6#
Lombok旨在为您的POJO处理样板代码。自定义的构造函数/setters/getters/toString/copy等不在代码的样板部分。对于这些情况,每个Java IDE都提供了易于使用的代码生成器来帮助您立即完成任务。在你的情况下
比一个假设更容易理解,也更有意义:
玩得开心!