如果我使用Lombok指定@AllArgsConstructor,它将生成一个构造函数来设置所有声明的字段(不是最终字段,而不是静态字段)。是否可以省略某些字段,并为所有其他字段保留生成的构造函数?
发布于 2014-05-21 08:44:13
不那是不可能的。有一个创建@SomeArgsConstructor
的特性请求,您可以在其中指定涉及的字段列表。
完全公开:我是Lombok开发人员的核心项目之一。
发布于 2016-12-19 09:50:26
或者,您可以使用@RequiredArgsConstructor
。这为所有属于@NonNull
或final
的字段添加了一个构造函数。
见文档
发布于 2020-12-17 08:07:18
为了防止有帮助,初始化的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);
特别是对于集合或其他可变类来说,这是有意义的。
此解决方案可与这里的其他解决方案一起使用,即使用@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");
https://stackoverflow.com/questions/23761242
复制相似问题