Java插入式注解處理器
3. 實(shí)現(xiàn)原理
- Lombok 的核心工作原理就是編譯時(shí)注解(作用于 javac 編譯的過程中)
- 在Javac 解析成抽象語法樹之后(AST), Lombok 根據(jù)自己的注解處理器讲弄,動(dòng)態(tài)的修改 AST,增加新的節(jié)點(diǎn)(所謂代碼),最終通過分析和生成字節(jié)碼
https://segmentfault.com/a/1190000041200280 自定義注解
- @Data注解,@Retention(RetentionPolicy.SOURCE) ,注解保留的時(shí)間是在源碼期間识啦,編譯后該注解就會(huì)刪除箕憾,在刪除之前擂煞,編譯器會(huì)為其添加一些方法等等操作诬辈,即在編譯期為代碼進(jìn)行了增強(qiáng)酵使。
從 Javac 代碼的總體結(jié)構(gòu)來看,編譯過程大致可以分為 1 個(gè)準(zhǔn)備過程和 3 個(gè)處理過程:
- 準(zhǔn)備過程:初始化插入式注解處理器焙糟。
- 解析與填充符號(hào)表過程口渔,包括:詞法、語法分析穿撮;填充符號(hào)表缺脉。
- 插入式注解處理器的注解處理過程。
- 分析與字節(jié)碼生成過程悦穿。
Other
- The balancing act