首页 > 解决方案 > 不同的构造函数(LOMBOK)

问题描述

我有一个看起来像这样的类:

@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 处理的其他构造函数,或者有没有更好/更优雅的方法只使用龙目岛吗?

谢谢!

标签: javaconstructorannotationslombok

解决方案


是的,你应该自己添加它们。多年前已经讨论过添加@SomeArgsConstructor注释,但由于 Lombok 团队从未添加过该注释,我认为他们不太可能这样做。

或者,如评论中所述,使用带有@Builder注释的构建器模式。然后你可以写这样的东西:StatusUpdate.builder().text("text").date(new Date()).build();.


顺便说一句,如果您使用 注释所有字段@Getter,并在类级别上@Setter使用@EqualsAndHashCodeand ,我认为@Data注释可能非常适合这个类。@RequiredArgsConstructor


推荐阅读