Lombok:如何指定一个arg构造函数?

时间:2014-12-18 12:58:55

标签: java lombok

使用Lombok,是否可以指定一个arg构造函数?

我的目的是使用Lombok注释创建一个构造函数,如下面的构造函数。

class MyClass {
    private String param;
    private Integer count;

    public MyClass(String param) {
        this.param = param;
    }
}

3 个答案:

答案 0 :(得分:11)

Lombok不允许您准确指定字段,但有3个注释可供选择。与

@RequiredArgsConstructor class MyClass {
    private final String param;
    private Integer count;
}
你可以得到它。如果参数未初始化为内联且final@NonNull,则必需

答案 1 :(得分:10)

  

我在文档中找不到

这个怎么样:http://projectlombok.org/features/Constructor.html

您必须初始化所有不应该是构造函数的变量。

  

@RequiredArgsConstructor为每个需要特殊处理的字段生成一个带有1个参数的构造函数。所有未初始化的final字段都会获得一个参数,以及标记为@NonNull的任何字段,这些字段在声明它们时未初始化。对于标有@NonNull的字段,还会生成显式空检查。

所以下面应该创建一个参数(param)构造函数:

@RequiredArgsConstructor class MyClass {
     private String param;
     private Integer count = -1;
}

答案 2 :(得分:7)

@RequiredArgsConstructor@NonNull是解决上述问题的两个重要键。因为@RequiredArgsConstructor创建的构造函数带有用@NonNull注释进行注释的字段。

@RequiredArgsConstructor
class MyClass {
    @NonNull
    private String param;
    private Integer count;
}

这等效于:

class MyClass {
    private String param;
    private Integer count;

    public MyClass(String param) {
        this.param = param;
    }
}