如果我使用Lombok指定@AllArgsConstructor,它将生成一个构造函数来设置所有声明的(非最终的,非静态的)字段。是否可以省略某些字段,并将生成的构造函数保留给所有其他字段?
不,这是不可能的。有一个功能要求创建一个@SomeArgsConstructor
,您可以在其中指定一个相关字段的列表。
全面披露:我是龙目岛项目的核心开发人员之一。
或者,您可以使用@
请参阅文档
以防万一有帮助,初始化的最终
字段将被排除在外。
@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
:
@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");