[英]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.