小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java – lombok – 多個鏡頭中的@Builder模式

 印度阿三17 2019-07-17

我使用lombok project的@Builder,所以請考慮我有這個例子:

@Builder
public class Client {

    private @Getter @Setter Integer id;
    private @Getter @Setter String name;

}

這相當于:

public class Client {

    private @Getter @Setter Integer id;
    private @Getter @Setter String name;

    public static class Builder {

        private Integer id;
        private String name;

        private Builder() {
        }

        public Builder id(final Integer value) {
            this.id = value;
            return this;
        }

        public Builder name(final String value) {
            this.name = value;
            return this;
        }

        public Client build() {
            return new Client(this);
        }
    }

    public static Client.Builder builder() {
        return new Client.Builder();
    }

    private Client(final Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
    }
}

當我嘗試一次性設置所有字段時沒有問題:

public static void main(String[] args) {
    Client client = Client.builder()
            .id(123)
            .name("name")
            .build();
}

輸出:

Client{id=123, name=name}

現(xiàn)在,考慮我想要多次拍攝.例如:

public static void main(String[] args) {
    Client client = Client.builder()
            .id(123)//<-------------------------- Set just the id
            .build();

    client = Client.builder()
            .name("name")//<--------------------- Set name
            .build();

}

這在邏輯上為id返回null:

Client{id=null, name=name}

通常,沒有l(wèi)ombok,我通過在Builder類中添加一個新的構(gòu)造函數(shù)來解決這個問題,該構(gòu)造函數(shù)采用相同的對象:

public static class Builder {
    // ...
    public Builder(Client client) {
        this.id = client.id;
        this.name = client.name;
    }
    // ...
}

然后我將我的對象傳遞給該構(gòu)造函數(shù):

Client client = Client.builder()
        .id(123)
        .build();

client = new Client.Builder(client)//<---------------- Like this 
        .name("name")
        .build();

這解決了我的問題,但我不能用lombok來解決它.有什么方法可以解決這個問題嗎?

解決方法:

您可以使用toBuilder屬性來執(zhí)行此操作.

@Builder(toBuilder=true)
public class Client {
    private @Getter @Setter Integer id;
    private @Getter @Setter String name;
}

然后你可以這樣使用它

public void main(String[] args){
    Client client = Client.builder()
        .id(123)
        .build();

    client = client.toBuilder()
        .name("name")
        .build();
}
來源:https://www./content-1-335051.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多