2016-12-11 111 views
-2

javac工具如何處理源代碼中的註釋?它們是否被編譯並翻譯爲字節碼或者它們將以類似於處理註釋行的方式處理?javac工具如何處理註釋

+0

定義你的意思是「過程」?您是在談論[**編譯時註釋處理**](http://hannesdorfmann.com/annotation-processing/annotationprocessing101)? –

+0

是的,我的意思是編譯時間註釋處理。 –

回答

1

註解由編譯器以特殊方式處理。它們被解析,但大多數註釋對編譯器沒有任何意義。例如,如果您錯誤地使用了註釋,則會發生編譯時錯誤。您可以找到編譯器相關注釋列表here

之後,行爲取決於註釋類型:
如果標註有rentention policy設置爲RUNTIMECLASS,它實際上包含在類文件。如果保留策略爲RUNTIME,則註釋甚至可以通過反射在運行時訪問。許多圖書館使用它來提供一些額外的舒適性,例如JUnit使用@Test來標記實現單元測試的方法,並在運行時查找這些方法。

此外,java編譯器允許實現所謂的「註釋處理器」,它可以訪問編譯單元的AST並處理註釋。這是編譯器確實處理註釋的另一個證明。