什麼是lombok
Lombok項目是一個Java庫,它會自動插入編輯器和建構工具中,Lombok提供了一組有用的注釋,用來消除Java類中的大量樣闆代碼。
對lombok不熟悉的朋友,可以閱讀一下官方文檔,再來看本文。官方文檔如下
https://projectlombok.org/
我們先來看一個小例子

提問: main函數會輸出什麼?
答案:空指針異常
回答出正确答案的朋友,下文基本上可以不用看了。可能有些朋友會有疑問,我例子中明明使用了
為什麼還會報空指針?
真相就在lombok用@builder生成的class檔案中,我們看下使用@builder,生成的class檔案反編譯後長啥樣
看到我圈紅起來的,大家應該就一目了然。原來當我們用
時,此時user對象中的positionList就會被userBuilder中的positionList覆寫,而userBuilder中的positionList是null
方法一:positionList前面加上final修飾
此時用@Budiler生成class為
此時user對象中的positionList用的還是原先的positionList,是以不會出現空指針異常
方法二:positionList前面加上@Builder.Default注解
當positionList$set為false,會給userBuilder的positionList指派為
是以當user對象中的positionList被userBuilder中的positionList覆寫後,userBuilder中的positionList是new ArrayList(),此時就不會出現空指針現象
方法三:不用build執行個體化對象
把
改成用
很多時候沒那麼多的想當然