为什么Lombok @Builder与该构造函数不兼容?
我有这个简单的代码:
@Data@Builder
public class RegistrationInfo {
private String mail;
private String password;
public RegistrationInfo(RegistrationInfo registrationInfo) {
this.mail = registrationInfo.mail;
this.password = registrationInfo.password;
}
}
首先,我只使用了@Builder
Lombok批注,一切都很好。但是我添加了构造函数,并且代码不再编译。错误是:
Error:(2, 1) java: constructor RegistrationInfo in class com.user.RegistrationInfo cannot be applied to given types; required: com.user.RegistrationInfo
found: java.lang.String,java.lang.String
reason: actual and formal argument lists differ in length
所以我有两个问题:
- 为什么龙目岛
@Builder
与此构造函数不兼容? - 考虑到需要构建器和构造器,如何使代码编译?
回答:
您可以添加@AllArgsConstructor
注释,因为
@Builder
如果未定义其他构造函数,则生成all-args构造函数。
(引用@Andrew Tobilko)
或将属性设置为@Builder
:@Builder(toBuilder = true)
这为您提供了复制构造函数的功能。
@Builder(toBuilder = true)class Foo {
// fields, etc
}
Foo foo = getReferenceToFooInstance();
Foo copy = foo.toBuilder().build();
以上是 为什么Lombok @Builder与该构造函数不兼容? 的全部内容, 来源链接: utcz.com/qa/426423.html