2016-12-11 55 views
-2

javac工具如何处理源代码中的注释?它们是否被编译并翻译为字节码或者它们将以类似于处理注释行的方式处理?javac工具如何处理注释

+0

定义你的意思是“过程”?您是在谈论[**编译时注释处理**](http://hannesdorfmann.com/annotation-processing/annotationprocessing101)? –

+0

是的,我的意思是编译时间注释处理。 –

回答

1

注解由编译器以特殊方式处理。它们被解析,但大多数注释对编译器没有任何意义。例如,如果您错误地使用了注释,则会发生编译时错误。您可以找到编译器相关注释列表here

之后,行为取决于注释类型:
如果标注有rentention policy设置为RUNTIMECLASS,它实际上包含在类文件。如果保留策略为RUNTIME,则注释甚至可以通过反射在运行时访问。许多图书馆使用它来提供一些额外的舒适性,例如JUnit使用@Test来标记实现单元测试的方法,并在运行时查找这些方法。

此外,java编译器允许实现所谓的“注释处理器”,它可以访问编译单元的AST并处理注释。这是编译器确实处理注释的另一个证明。