当前位置: 首页 > 知识库问答 >
问题:

为什么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;
    }
}
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  
    null

共有1个答案

谢涵亮
2023-03-14

您可以添加@allargsconstructor批注,因为

@builder生成一个全参数构造函数,如果没有定义其他构造函数。

(引用@安德鲁·托比尔科)

@Builder(toBuilder = true)
class Foo {
    // fields, etc
}

Foo foo = getReferenceToFooInstance();
Foo copy = foo.toBuilder().build();
 类似资料:
  • 问题内容: 我有这个简单的代码: 首先,我只使用了Lombok批注,一切都很好。但是我添加了构造函数,并且代码不再编译。错误是: 所以我有两个问题: 为什么龙目岛与此构造函数不兼容? 考虑到需要构建器和构造器,如何使代码编译? 问题答案: 您可以添加注释,因为 如果未定义其他构造函数,则生成all-args构造函数。 (引用@Andrew Tobilko) 或将属性设置为:这为您提供了复制构造函数

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

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

  • @adilooze解决方案

  • 这是我的代码: 爪哇说: File.java:[92,141]不兼容的类型:java.lang.对象不能转换为捕获#1?扩展java.lang.对象 列141是中的。 为什么这个不会编译?

  • 预计此函数将无法typeCheck。然而,没有解释发生这种情况的原因。在GHCI中试用时,我得到了以下输出: 为什么会出现这种情况?