答案 0 :(得分:2)
注释并不是一种转换代码的工具;他们只是为代码添加元数据。例如,您无法使用注释进行条件编译。
正如Sun's tutorial on annotations所说:
注释提供有关不属于程序本身的程序的数据。它们对它们注释的代码的操作没有直接影响。
编译Java源代码时,注释可以由称为注释处理器的编译器插件处理。处理器可以生成信息性消息或创建其他Java源文件或资源,而这些文件或资源又可以编译和处理,但处理器不能修改带注释的代码本身。
因此,注释处理器插件无法为您提供C预处理器具有的所有功能。
答案 1 :(得分:2)
您可以使用注释处理框架执行编译时任务。它没有预处理器那么强大,因为你无法做到这样的事情:
@RunOnlyOn(OS.Mac) public void someMethod() { ... }
注释处理器的一些好用例是:
请注意,从Java 6开始不再需要APT,因为所有正确声明的注释处理器都参与编译。