免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

序言各位好啊,我是會(huì)編程的蝸牛,作為java開發(fā)者,我們平常在開發(fā)過程中,總是希望能夠盡量少敲代碼 。這一方面,當(dāng)然是為了偷懶,另一方面,當(dāng)然也是為了代碼看起來更加簡潔一點(diǎn),不斷往編程規(guī)范上靠 。然后其中有一個(gè)插件或者說依賴吧,就是lombok,它的出現(xiàn)真可謂程序員的福音啊 。只要用了這個(gè)東西,我們?cè)僖膊挥脤懩且淮蠖阎貜?fù)的但確實(shí)必須的代碼了 。雖然我們也可以用IDEA自動(dòng)生成這些東西,但總歸麻煩啊 。一旦這個(gè)類的屬性做了一些調(diào)整,還得重新修改對(duì)應(yīng)的setter/getter方法等 。當(dāng)然,今天不是來說lombok的好的,而是想和各位探索一下這個(gè)東西存在的一些坑,防止大家踩坑,這個(gè)坑就讓我來踩一下吧~問題再現(xiàn)首先,我們新建一個(gè)Dog的類,里面有name和year的屬性,然后加上注解@Data,然后進(jìn)行編譯,可以看到class文件里面自動(dòng)生成了很多代碼 。 

Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
 
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
里面我數(shù)了一下,一共生成了6種類型的代碼,有【空構(gòu)造方法】、【Get/Set方法】、【equals方法】、【canEqual】、【hashCode】、【toString】方法,我們想要的和不想要的,通過給我們生成了 。 事情到這里本來是可以結(jié)束了,但是我們的java實(shí)在太博大精深了,區(qū)區(qū)這點(diǎn)注解,還不能完全生成所有的代碼 。平常最常用的應(yīng)該就是@Data注解了,但是其實(shí)還有好多其他的注解,比如@Builder,這是一個(gè)可以生成有參構(gòu)造函數(shù)的注解,剛才生成的一般也能夠滿足我們的需求了,但是對(duì)于需要設(shè)置有參構(gòu)造函數(shù)的情況,只用@Data就不夠了 。那我們看下使用@Builder,生成的代碼是怎么樣的 。 
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
  
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
可以看到,一共生成了3個(gè)大的代碼,一個(gè)是有參構(gòu)造函數(shù),一個(gè)是靜態(tài)方法,一個(gè)是靜態(tài)類 。那么,如果我們要使項(xiàng)目同時(shí)生成這些代碼呢?大家可能會(huì)說,把兩個(gè)注解都加上唄 。那么,我們來試一下 。  
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
 
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
可以看到,雖然生成的代碼有所增加,但少了一個(gè)關(guān)鍵的無參構(gòu)造方法,這可是一個(gè)很關(guān)鍵的構(gòu)造方法,在好的框架里都會(huì)調(diào)用這個(gè)無參構(gòu)造方法的 。如果沒有,肯定會(huì)報(bào)一大堆錯(cuò)誤的 。 那么,我們?cè)撛趺醋瞿兀拷鉀Q方法
然少了一個(gè)空構(gòu)造方法,我們手動(dòng)加一個(gè) 。但結(jié)果卻出乎我們的意料,編譯報(bào)錯(cuò)了 。看來這種方式是不可行的 。  
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
然剛才那種方式不同,我們可以給剛才那個(gè)空構(gòu)造方法,再加一個(gè)注解,這個(gè)注解是@Tolerate,有了這個(gè)注解,可以讓lombok在處理的時(shí)候,直接忽略這個(gè)構(gòu)造方法,我們來看下效果 。可以看到生成的class文件里面,已經(jīng)有空構(gòu)造方法了 。 
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
 
Lombok好用是好用,就是容易踩坑,這份避坑指南請(qǐng)查收

文章插圖
么,還有其他的方式嗎?答案是肯定 。我們可以使用@RequiredArgsConstructor 來構(gòu)建含有參數(shù)的,用@NoArgsConstructor來構(gòu)建沒有參數(shù)的,而舍棄@Builder 。如圖,也同時(shí)生成了有參和無參的構(gòu)造方法 。 

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀