java - 为什么 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
所以我有两个问题:
- 为什么 Lombok
@Builder
与此构造函数不兼容? - 考虑到我需要构建器和构造器,如何使代码编译?
解决方案
您可以添加@AllArgsConstructor
注释,因为
@Builder
如果没有定义其他构造函数,则生成一个全参数构造函数。
(引用@Andrew Tobilko)
或将属性设置为@Builder
:@Builder(toBuilder = true)
这为您提供了复制构造函数的功能。
@Builder(toBuilder = true)
class Foo {
// fields, etc
}
Foo foo = getReferenceToFooInstance();
Foo copy = foo.toBuilder().build();
推荐阅读
- reactjs - 如何使用 Jest 测试 Ajax 调用?
- forms - vuejs 阻止从子组件提交表单
- .net - .NET 调试器:不加载所有符号
- android - 将文件保存在内部存储目录中
- oracle-apex - 动态设置 Oracle Apex 5.1 交互式网格区域标题
- visual-studio - VS2019 - Android - Android.Content.Res.Resources+NotFoundException:
- python - 将 1d numpy 数组重塑为 2d
- c - 如何将整数转换为char数组[]?
- java - 无法实例化由 InvocationTargetException 和 NullPointerException 引起的类
- javascript - node.js的导入导出