【发布时间】:2017-04-26 19:00:46
【问题描述】:
对于此代码:
@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);
但是,当添加@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;
}
两个ctor都可用。然而,这种行为对我来说几乎没有意义,所以我希望有人能解释这是一个错误还是一个功能!
【问题讨论】:
标签: lombok