簡體   English   中英

枯萎vs建設者龍目島圖書館

[英]wither vs builder Lombok library

我已經開始使用Lombok庫,我無法弄清楚使用wither和構建器之間的區別。

@Builder
@Wither
public class Sample {
   private int x;
   private int y;
}

現在我可以用兩種方式創建一個對象:

Sample s = new Sample().builder()
              .x(10)
              .y(15)
              .build();

要么

Sample s = new Sample()
           .withx(10)
           .withy(10);

兩者有什么區別? 我應該使用哪一個?

@Builder用於創建可變對象, @Wither用於不可變對象。

披露:我是一名lombok開發者。

通常,區別在於使用builder()構建對象時,必須最后調用build()方法,並且在調用build()之前,所有屬性值都保存在內部構建器對象中,而不是您創建的對象中。新。 設置完所有屬性並調用build()后,將創建一個新對象。 請在此處查看詳細信息: https//projectlombok.org/features/Builder.html 我認為構建器模式的更好方法是:

Sample s = Sample.builder()
          .x(10)
          .y(15)
          .build();

因為第一個Sample對象是冗余的。

對於馬眼罩,每次調用withXXX(xxx)時,都會返回一個新對象,其中XXX設置為xxx,並且從您調用的對象克隆的所有其他屬性都會打開(如果xxx與原始xxx不同。請參閱此處的詳細信息: https://projectlombok.org/features/experimental/Wither.html )。 選擇哪種方式,我認為這取決於您的個人習慣和項目的代碼風格。

希望這可以幫到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM