Lombok:缺少生成的构造函数?
Lombok: generated constructor missing?
对于此代码:
@Data
@Entity
@AllArgsConstructor
public class Person {
private @GeneratedValue @Id Long id;
private final String firstname;
private String middlename;
private final String lastname;
}
Lombok (v. 1.16.14) 应该生成两个构造函数。首先,由于@Data:
public Person(String firstname, String lastname) { ... }
由于@AllArgsConstructor,还应该有:
public Person(Long id, String firstname, String middlename, String lastname);
然而,第一个(两个参数)构造函数"disappears"在添加@AllArgsConstructor
注解时。 @Data
的 javadoc 指出:
Equivalent to @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode.
所以我认为两个参数 ctor 应该在那里是不是错了?这有一个非常简单的解决方法,因为如果显式添加 @RequiredArgsConstructor
注释:
@Data
@Entity
@AllArgsConstructor
@RequiredArgsConstructor
public class Person {
private @GeneratedValue @Id Long id;
private final String firstname;
private String middlename;
private final String lastname;
}
两个 ctors 都可用。然而,这种行为对我来说几乎没有意义,所以我希望有人能解释这是一个错误还是一个功能!
@Data
仅在有 none 时生成构造函数。
The documentation 说:“@Data 就像在 class(除了如果存在任何显式编写的构造函数,则不会生成任何构造函数)。”您的 @AllArgsConstructor
算作明确编写的构造函数。
这是一项功能。
披露:我是 Lombok 开发人员。
对于此代码:
@Data
@Entity
@AllArgsConstructor
public class Person {
private @GeneratedValue @Id Long id;
private final String firstname;
private String middlename;
private final String lastname;
}
Lombok (v. 1.16.14) 应该生成两个构造函数。首先,由于@Data:
public Person(String firstname, String lastname) { ... }
由于@AllArgsConstructor,还应该有:
public Person(Long id, String firstname, String middlename, String lastname);
然而,第一个(两个参数)构造函数"disappears"在添加@AllArgsConstructor
注解时。 @Data
的 javadoc 指出:
Equivalent to @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode.
所以我认为两个参数 ctor 应该在那里是不是错了?这有一个非常简单的解决方法,因为如果显式添加 @RequiredArgsConstructor
注释:
@Data
@Entity
@AllArgsConstructor
@RequiredArgsConstructor
public class Person {
private @GeneratedValue @Id Long id;
private final String firstname;
private String middlename;
private final String lastname;
}
两个 ctors 都可用。然而,这种行为对我来说几乎没有意义,所以我希望有人能解释这是一个错误还是一个功能!
@Data
仅在有 none 时生成构造函数。
The documentation 说:“@Data 就像在 class(除了如果存在任何显式编写的构造函数,则不会生成任何构造函数)。”您的 @AllArgsConstructor
算作明确编写的构造函数。
这是一项功能。
披露:我是 Lombok 开发人员。