乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      java – lombok – 多個(gè)鏡頭中的@Builder模式

       印度阿三17 2019-07-17

      我使用lombok project的@Builder,所以請(qǐng)考慮我有這個(gè)例子:

      @Builder
      public class Client {
      
          private @Getter @Setter Integer id;
          private @Getter @Setter String name;
      
      }
      

      這相當(dāng)于:

      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;
          }
      }
      

      當(dāng)我嘗試一次性設(shè)置所有字段時(shí)沒(méi)有問(wèn)題:

      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}
      

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

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

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

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

      這解決了我的問(wèn)題,但我不能用lombok來(lái)解決它.有什么方法可以解決這個(gè)問(wèn)題嗎?

      解決方法:

      您可以使用toBuilder屬性來(lái)執(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();
      }
      
      來(lái)源:https://www./content-1-335051.html

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多