java~lombok里(li)的Builder注(zhu)解
lombok注解在java進(jin)(jin)行(xing)編譯時進(jin)(jin)行(xing)代碼(ma)的(de)(de)(de)構建(jian),對于java對象的(de)(de)(de)創建(jian)工作它可(ke)以更優(you)雅,不(bu)需要寫(xie)多余的(de)(de)(de)重復的(de)(de)(de)代碼(ma),這(zhe)(zhe)對于JAVA開(kai)發人員(yuan)是很重要的(de)(de)(de),在出(chu)現lombok之后,對象的(de)(de)(de)創建(jian)工作更提供Builder方法,它提供在設(she)計數據實體時,對外保(bao)持private setter,而對屬性(xing)的(de)(de)(de)賦值采用Builder的(de)(de)(de)方式,這(zhe)(zhe)種方式最優(you)雅,也(ye)更符合封(feng)裝的(de)(de)(de)原則,不(bu)對外公開(kai)屬性(xing)的(de)(de)(de)寫(xie)操作!
@Builder聲明(ming)實(shi)體(ti),表示可以進行Builder方(fang)式初始(shi)化,@Value注解(jie),表示只公開getter,對所(suo)有屬性的setter都封閉,即private修飾,所(suo)以它(ta)不能和@Builder現(xian)起用(yong)
一般地,我們可以(yi)這樣(yang)設計實體(ti)!
@Builder(toBuilder = true) @Getter public class UserInfo { private String name; private String email; @MinMoney(message = "金額不能小于0.") @MaxMoney(value = 10, message = "金額不能大于10.") private Money price; }
@Builder注解(jie)賦值新對象
UserInfo userInfo = UserInfo.builder() .name("zzl") .email("bgood@sina.com") .build();
@Builder注(zhu)解修改原對象的屬性值
修(xiu)改實體,要求實體上(shang)添加@Builder(toBuilder=true)
userInfo = userInfo.toBuilder() .name("OK") .email("zgood@sina.com") .build();
感謝各位的閱讀!