不同的构造函数(lombok)

a7qyws3x  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(538)

我有一节课是这样的:

@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来做?
谢谢!

o4hqfura

o4hqfura1#

是的,你应该自己加上去。几年前,已经有一个讨论添加 @SomeArgsConstructor 注解,但由于Lombok山团队从来没有添加过注解,我认为他们不太可能会这样做。
或者,如注解中所述,将生成器模式与@builder注解一起使用。然后你可以写这样的东西: StatusUpdate.builder().text("text").date(new Date()).build(); .
顺便说一句,如果你用 @Getter , @Setter 使用 @EqualsAndHashCode 以及 @RequiredArgsConstructor 在类级别上,我认为@data注解非常适合这个类。

xmakbtuz

xmakbtuz2#

使用 @Builder 使用实体类进行注解并手动构建对象。

User user = User.builder()
                    .username(signupDto.getUsername())
                    .email(signupDto.getEmail())
                    .password(encoder.encode(signupDto.getPassword()))
                    .roles(roles)
                    .build();

相关问题