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

}

}

首先,我只使用了@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 @Builder与该构造函数不兼容? 的全部内容, 来源链接: utcz.com/qa/426423.html

回到顶部