提问者:小点点

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


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


共3个答案

匿名用户

不,这是不可能的。有一个功能要求创建一个@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");