0
我想在源代碼編譯爲類文件之前添加一些東西(例如:add方法或字段)。但我不知道該怎麼做。有什麼辦法可以做到嗎?在Java編譯器將AST編譯成類文件之前,我可以修改AST嗎
我知道一個開源項目Lombok,它可以將setters和getters方法自動添加到類中,IDE(eclipse)現在可以找到新添加的方法。所以有人可以告訴我它是如何實現的?
我想在源代碼編譯爲類文件之前添加一些東西(例如:add方法或字段)。但我不知道該怎麼做。有什麼辦法可以做到嗎?在Java編譯器將AST編譯成類文件之前,我可以修改AST嗎
我知道一個開源項目Lombok,它可以將setters和getters方法自動添加到類中,IDE(eclipse)現在可以找到新添加的方法。所以有人可以告訴我它是如何實現的?
source code for lombok is on github。 Afaik它使用javac annotation processing feature的內部API。註釋處理器只應該能夠創建新文件,而不是修改當前編譯的文件。通過類型轉換,修補類加載器並重寫某些方法,lombok能夠修改當前正在編譯的java文件的抽象語法樹並添加方法或源代碼。它的工作原理,但我認爲它是一個黑客攻擊,而不是太依賴它。
看看[cglib](http://cglib.sourceforge.net/)。它可能會覆蓋您的需求,但它不是編譯器擴展。 – Henrik 2013-03-12 09:22:48
@Henrik謝謝你的幫助。 – Tony 2013-03-12 09:25:29