当前位置: 首页 > 面试题库 >

为什么Lombok @Builder与该构造函数不兼容?

红弘盛
2023-03-14
问题内容

我有这个简单的代码:

@Data
@Builder
public class RegistrationInfo {

    private String mail;
    private String password;

    public RegistrationInfo(RegistrationInfo registrationInfo) {
        this.mail = registrationInfo.mail;
        this.password = registrationInfo.password;
    }
}

首先,我只使用了@BuilderLombok批注,一切都很好。但是我添加了构造函数,并且代码不再编译。错误是:

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

所以我有两个问题:

  1. 为什么龙目岛@Builder与此构造函数不兼容?
  2. 考虑到需要构建器和构造器,如何使代码编译?

问题答案:

您可以添加@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项目与Spring Data JPA一起使用。有什么方法可以将Lombok 与JPA默认构造函数连接? 码: 据我所知,JPA需要默认的构造函数,该构造函数被注解覆盖。有什么解决方法吗? 这段代码给我错误: 问题答案: 更新 根据反馈和John的回答,我已更新了不再使用or的答案,而是通过和创建访问器和变量,通过创建默认构造函数via,最后我们创建了构建器通过via

  • 我使用默认构造函数从子类中设置recordId的值,最初没有使用lombok。最终我决定在这里使用构建器,但现在的问题是lombok构建器在内部覆盖了我的默认构建器,因此从未设置值。

  • @adilooze解决方案

  • 我正在尝试编写一个Python实用程序,将Oracle的RAW字节字符串(作为字符串)转换为Guid,反之亦然。我试图重用我在C#中构建的同一个实用程序中的算法,但是从同一个字节数组构造一个和一个会产生不同的Guid/UUID。它们是一样的,不是吗?我读过UUID只是一个更好的术语。 在C#中,我有一个字节数组,< code>byte_array如下所示: 在 Python 中,我有一个字节数组,

  • 问题内容: 我一直在寻找为什么不应该在类的构造函数中调用线程的start方法的理由。考虑以下代码: ImportantData是一些通用的东西(可能很重要),而MyOperationThread是知道如何处理SomeClass实例的线程的子类。 脚节点: 我完全理解为什么这是不安全的。如果MyOperationThread在以下语句完成(并且数据已初始化)之前尝试访问SomeClass.data,