bal*_*age 6 java constructor lombok
@RequiredArgsConstructor当不存在最终字段时,Lombok 注释会生成一个空构造函数,此代码编译时不会出现错误:
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class LombokTest {
public LombokTest(String a) {
// to avoid creation of the default constructor by the Java compiler
}
public static void main(String[] args) {
new LombokTest();
}
}
Run Code Online (Sandbox Code Playgroud)
根据Lombok文档,注释@Data还应该生成一个RequiredArgsConstructor,但是在以下代码中
import lombok.Data;
@Data
public class LombokTest {
public LombokTest(String a) {
// to avoid creation of the default constructor by the Java compiler
}
public static void main(String[] args) {
new LombokTest();
}
}
Run Code Online (Sandbox Code Playgroud)
main 方法中的 new LombokTest() 会导致错误,因为无参数构造函数未定义。
这是龙目岛的一个错误吗?
小智 4
我认为这并不是龙目岛的一个真正的错误。如果将 @Data 放在类上,则仅当您没有任何其他构造函数时才会生成空构造函数。
如果将 @AllArgsConstructor 和 @Data 放在类上,效果是一样的:不会生成空构造函数,因为将生成带有所有参数的构造函数。
您可以添加@NoArgsConstructor来生成空构造函数。