序言各位好啊,我是會(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)生成了很多代碼 。

文章插圖

文章插圖
里面我數(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,生成的代碼是怎么樣的 。

文章插圖

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

文章插圖

文章插圖
可以看到,雖然生成的代碼有所增加,但少了一個(gè)關(guān)鍵的無參構(gòu)造方法,這可是一個(gè)很關(guān)鍵的構(gòu)造方法,在好的框架里都會(huì)調(diào)用這個(gè)無參構(gòu)造方法的 。如果沒有,肯定會(huì)報(bào)一大堆錯(cuò)誤的 。 那么,我們?cè)撛趺醋瞿兀拷鉀Q方法
- 既

文章插圖
- 既

文章插圖

文章插圖
- 那
經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀
- 三伏貼可以刷醫(yī)保卡嗎 三伏貼白天貼還是晚上貼
- 三伏貼忌口是貼藥時(shí)忌還是整個(gè)三伏都忌口 三伏貼忌口是忌口一伏天嗎
- 黃龍溪屬于成都還是眉山
- 精梳棉和100%棉的區(qū)別
- 飛機(jī)上排泄物都是怎么處理的 飛機(jī)上的排泄物都去哪了
- 飛沫傳播的近距離是多少米 飛沫傳播的近距離是多少
- 飛機(jī)燒什么油 飛機(jī)燒的是什么油
- 23寸尤克里里是多少厘米
- 臺(tái)風(fēng)會(huì)把窗戶玻璃吹裂嗎
- 火車硬臥300斤會(huì)不會(huì)塌
