您好,登錄后才能下訂單哦!
這篇文章給大家介紹Lombok的原理是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
以 idea 為例,直接在工具中搜索 Lombok 插件,然后安裝它。安裝完成后重啟 idea 開發工具即可。
接下來,我們需要在使用 Lombok 的項目中引入 Lombok 的 jar 包。Maven 的 POM.xml 中引入以下配置:
然后在項目中的 get/set 就可以被我們替換成下面的代碼:
Lombok 有非常多的注解,下面是這些注解的解釋說明。
Lombok 的 val 可能用的人比較少,但其實它才是最值得推薦使用的一個,類似 JavaScript 的 val。
@NonNull 的用法也很常見。
@Cleanup 關閉流的做法。
@ToString 的用法。
@EqualsAndHashCode 的用法。
最常用的 @Data 的用法。
還有最常用的 @Builder 的用法。
更多關于 Lombok 注解的用法,我就不一一列舉了,大家可以看我上面的那個注解說明。
最后我說一下 Lombok 的原理。通過它的注解,我們可以看到,Lombok 的注解都定義了 @Retention 為 RetentionPolicy.RUNTIME 的代碼。這樣它只能在運行時通過反射來獲取注解值,使得運行時代碼效率降低。其次,如果想在編譯階段利用注解來進行一些檢查,對用戶的某些不合理代碼給出錯誤報告,反射的使用方法就無能為力了。好在,我們現在有了 JSR 269,它可以讓我們在 Javac 的編譯期利用注解做這些事情。所以我們發現核心的區分是在運行期還是編譯期。
在 Lombok 的處理流程中,Javac 解析成抽象語法樹之后(AST),Lombok 根據自己的注解處理器,動態的修改 AST,增加新的節點(所謂代碼),最終通過分析和生成字節碼。
自從Java 6起,javac 就支持“JSR 269 Pluggable Annotation Processing API”規范,只要程序實現了該 API,就能在 javac 運行的時候得到調用。
關于Lombok的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。