建立者和吸气剂

时间:2018-08-13 09:11:13

标签: java

我想使用以下Java代码来创建Java对象:

public class NotificationMessage implements Serializable {

    private static final long serialVersionUID = 985577913631100757L;

    private int id;
    private String uniqueid;
    private String status;
    private String type;
    private Map<String, String> map;
    private Date created_at;

    public NotificationMessage() {
    }

    public NotificationMessage(int id, String uniqueid, String status, String type, Map<String, String> map,
            Date created_at) {
        this.id = id;
        this.uniqueid = uniqueid;
        this.status = status;
        this.type = type;
        this.map = map;
        this.created_at = created_at;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
....
}

当我要创建Java对象时,如何使用builder来最大程度地减少设置器?

我想要设置这样的值:

NotificationMessage.builder().id(123).uniqueid(1234).status("active")

2 个答案:

答案 0 :(得分:2)

您可以使用 https://projectlombok.org/

@Entity
@Data
@Builder
@Getter
public class NotificationMessage {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String uniqueid;
    private String status;
    private String type;
    private Map<String, String> map;
    private Date created_at;
}


NotificationMessage.builder().id(123).uniqueid(1234).status("active");

assertThat(NotificationMessage.getId()).isEqulTo(123));

答案 1 :(得分:0)

为了像这样链接方法调用:

NotificationMessage.builder().id(123).uniqueid(1234).status("active")

您必须在每次调用时返回调用对象(this

public NotificationMessage id(int id) {
    this.id = id;
    return this;
}