不同的构造函数(LOMBOK)
Different constructors (LOMBOK)
我有一个 class 看起来像这样:
@EqualsAndHashCode
@RequiredArgsConstructor
public class StatusUpdate {
@Getter
@Setter
private Long id;
@Getter
@Setter
@NonNull
private String text;
@Getter
@Setter
@NonNull
private Date added;
}
我想使用 Lombok 创建这两个构造函数:
public StatusUpdate(String text) {
this.text = text;
}
public StatusUpdate(String text, Date added) {
this.text = text;
this.added = added;
}
我尝试使用所有三个注释:
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
但是我不能用这些来做到这一点,我只有一个有两个参数的构造函数,所以我需要一个只有一个参数的构造函数。我读了这个主题:@SomeArgsConstructor,这是我需要的,但由于这不存在,我想我应该手动创建一个我需要的 arg 构造函数和我将使用 Lombok 处理的其他构造函数,或者有更好的/仅使用 Lombok 更优雅的方式?
谢谢!
是的,您应该自己添加它们。几年前有 already a discussion 添加 @SomeArgsConstructor
注释,但由于 Lombok 团队从未添加该注释,我认为他们不太可能会这样做。
或者,如评论中所述,使用带有 @Builder 注释的构建器模式。然后你可以这样写:StatusUpdate.builder().text("text").date(new Date()).build();
.
顺便说一句,如果您使用 @Getter
、@Setter
注释所有字段并在 [=28= 上使用 @EqualsAndHashCode
和 @RequiredArgsConstructor
] 级别,我认为 @Data 注释可能很适合这个 class.
对您的实体使用 @Builder
注释 class 并手动构建您的对象。
User user = User.builder()
.username(signupDto.getUsername())
.email(signupDto.getEmail())
.password(encoder.encode(signupDto.getPassword()))
.roles(roles)
.build();
我有一个 class 看起来像这样:
@EqualsAndHashCode
@RequiredArgsConstructor
public class StatusUpdate {
@Getter
@Setter
private Long id;
@Getter
@Setter
@NonNull
private String text;
@Getter
@Setter
@NonNull
private Date added;
}
我想使用 Lombok 创建这两个构造函数:
public StatusUpdate(String text) {
this.text = text;
}
public StatusUpdate(String text, Date added) {
this.text = text;
this.added = added;
}
我尝试使用所有三个注释: @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor
但是我不能用这些来做到这一点,我只有一个有两个参数的构造函数,所以我需要一个只有一个参数的构造函数。我读了这个主题:@SomeArgsConstructor,这是我需要的,但由于这不存在,我想我应该手动创建一个我需要的 arg 构造函数和我将使用 Lombok 处理的其他构造函数,或者有更好的/仅使用 Lombok 更优雅的方式?
谢谢!
是的,您应该自己添加它们。几年前有 already a discussion 添加 @SomeArgsConstructor
注释,但由于 Lombok 团队从未添加该注释,我认为他们不太可能会这样做。
或者,如评论中所述,使用带有 @Builder 注释的构建器模式。然后你可以这样写:StatusUpdate.builder().text("text").date(new Date()).build();
.
顺便说一句,如果您使用 @Getter
、@Setter
注释所有字段并在 [=28= 上使用 @EqualsAndHashCode
和 @RequiredArgsConstructor
] 级别,我认为 @Data 注释可能很适合这个 class.
对您的实体使用 @Builder
注释 class 并手动构建您的对象。
User user = User.builder()
.username(signupDto.getUsername())
.email(signupDto.getEmail())
.password(encoder.encode(signupDto.getPassword()))
.roles(roles)
.build();