欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于@Data和@Builder注解解析

 更新時(shí)間:2024年10月25日 09:47:42   作者:abc1641211976  
在使用Lombok庫時(shí),@Data和@Builder注解混用可能會導(dǎo)致編譯失敗,解決方法包括添加@NoArgsConstructor和@AllArgsConstructor注解,或者重寫無參構(gòu)造器并注解@Tolerate,這是因?yàn)锧Data自動生成的構(gòu)造器與@Builder的構(gòu)造模式存在沖突

@Data和@Builder注解解析

@Data 和 @Builder是使用 lombok過程中常用的兩個(gè)注解

  • @Data:將一個(gè)普通類變成JavaBean,并自動生成相應(yīng)屬性的 Getter,Setter等方法
  • @Builder:用構(gòu)造者模式,通過鏈?zhǔn)椒椒◣椭覀兩蓪ο?/li>

存在問題

@Data 和 @Builder這兩個(gè)注解混合使用,會編譯失敗。

解決方案一

通過添加@NoArgsConstructor 和 @AllArgsConstructor 這兩個(gè)注解。

這種方式會通過@AllArgsConstructor生成一個(gè)訪問級別為 public 的全參構(gòu)造器。

@Builder可以用生成的全參構(gòu)造器來構(gòu)造對象,不再與@Data所包含的@RequiredArgsConstructor發(fā)生沖突。

解決方案二

通過自己重寫無參構(gòu)造器,并添加@Tolerate注解。

重寫的無參構(gòu)造器可以幫助我們解決@Data與 @Builder 注解的沖突。

原因分析

@Data為一個(gè) Java類賦予了 JavaBean 的全部功能.實(shí)現(xiàn)了Getter,Setter,構(gòu)造器,toString等。

在為一個(gè) JavaBean 在增加 @Data注解后,可以使用set方法設(shè)置對象屬性并且使用get方法讀取屬性。

@Builder 構(gòu)造者模式的初衷是構(gòu)建并產(chǎn)出復(fù)雜產(chǎn)品,在配置好屬性后產(chǎn)出的結(jié)果是一個(gè)產(chǎn)品,此時(shí)對于開發(fā)者而言更加注重的是使用產(chǎn)品的功能而非獲取產(chǎn)品內(nèi)部的構(gòu)造,與 JavaBean的區(qū)別在于在獲取產(chǎn)品后是無法再對產(chǎn)品設(shè)置屬性,讀取屬性。

而 @Builder 會為類創(chuàng)建一個(gè)構(gòu)造內(nèi)部類,通過該類可以構(gòu)造產(chǎn)品。

該種情形下,開發(fā)者不應(yīng)該通過 new創(chuàng)建對象而是統(tǒng)一通過構(gòu)造類創(chuàng)建對象,@Builder 獲取到的對象也沒有set和get功能。

@Builder與@Data一起使用的效果

首先@Data注解標(biāo)記了我們最終的產(chǎn)出注定是一個(gè)JavaBean,而JavaBean 中的屬性是可以設(shè)置的,構(gòu)造器模式的使用可以幫助我們通過鏈?zhǔn)秸{(diào)用的方式快速構(gòu)建 JavaBean,以往我們需要通過多行set方法實(shí)現(xiàn)的 JavaBean在構(gòu)造器模式下只需要一行即可完成.

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解釋為什么Java中“1000==1000”為false而”100==100“為true

    解釋為什么Java中“1000==1000”為false而”100==100“為true

    在日常編程中,我們經(jīng)常遇到一些看似簡單卻隱藏著復(fù)雜邏輯的問題,這篇文章主要介紹了解釋為什么Java中“1000==1000”為false而”100==100“為true,需要的朋友可以參考下
    2024-01-01
  • Linux部署springboot項(xiàng)目彩色日志打印方式

    Linux部署springboot項(xiàng)目彩色日志打印方式

    這篇文章主要介紹了Linux部署springboot項(xiàng)目彩色日志打印方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 剖析Java中阻塞隊(duì)列的實(shí)現(xiàn)原理及應(yīng)用場景

    剖析Java中阻塞隊(duì)列的實(shí)現(xiàn)原理及應(yīng)用場景

    這篇文章主要介紹了剖析Java中阻塞隊(duì)列的實(shí)現(xiàn)原理及應(yīng)用場景,這里也對阻塞和非阻塞隊(duì)列的不同之處進(jìn)行了對比,需要的朋友可以參考下
    2015-12-12
  • java開發(fā)使用BigDecimal避坑四則

    java開發(fā)使用BigDecimal避坑四則

    這篇文章主要為大家介紹了java開發(fā)使用BigDecimal的避坑四則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 詳解Java中二分法的基本思路和實(shí)現(xiàn)

    詳解Java中二分法的基本思路和實(shí)現(xiàn)

    二分法是一個(gè)非常高效的算法,它常常用于計(jì)算機(jī)的查找過程中。本文將通過示例為大家詳細(xì)講講二分法的基本思路和實(shí)現(xiàn),感興趣的可以了解一下
    2022-08-08
  • Spring實(shí)戰(zhàn)之使用TransactionProxyFactoryBean實(shí)現(xiàn)聲明式事務(wù)操作示例

    Spring實(shí)戰(zhàn)之使用TransactionProxyFactoryBean實(shí)現(xiàn)聲明式事務(wù)操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用TransactionProxyFactoryBean實(shí)現(xiàn)聲明式事務(wù)操作,結(jié)合實(shí)例形式分析了spring使用TransactionProxyFactoryBean實(shí)現(xiàn)聲明式事務(wù)相關(guān)配置、接口設(shè)置與使用技巧,需要的朋友可以參考下
    2020-01-01
  • 我對@RestController注解的理解

    我對@RestController注解的理解

    這篇文章主要介紹了我對@RestController注解的理解,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • JAVA匿名內(nèi)部類語法分析及實(shí)例詳解

    JAVA匿名內(nèi)部類語法分析及實(shí)例詳解

    這篇文章主要介紹了JAVA匿名內(nèi)部類語法分析及實(shí)例詳解,匿名內(nèi)部類可以使你的代碼更加簡潔,它與局部類很相似,不同的是它沒有類名,如果某個(gè)局部類你只需要用一次,那么你就可以使用匿名內(nèi)部類。對此感興趣的可以了解一下
    2020-07-07
  • Java中的ReentrantLock使用解析

    Java中的ReentrantLock使用解析

    這篇文章主要介紹了Java中的ReentrantLock使用解析,ReentrandLock即可重入鎖,可重入鎖解決的是重入鎖定的問題,重入鎖定指的是當(dāng)一個(gè)線程執(zhí)行邏輯時(shí),需要兩次獲取鎖,而該鎖不可重入就會導(dǎo)致內(nèi)部嵌套無法獲取鎖導(dǎo)致Reentrance Lockout發(fā)生,需要的朋友可以參考下
    2023-11-11
  • Java8實(shí)現(xiàn)優(yōu)雅的獲取重復(fù)字符與次數(shù)

    Java8實(shí)現(xiàn)優(yōu)雅的獲取重復(fù)字符與次數(shù)

    這篇文章主要為大家詳細(xì)介紹了在Java8中,我們應(yīng)該如何進(jìn)行字符及字符串的去重,以及計(jì)算去重次數(shù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2023-12-12

最新評論