代码之家  ›  专栏  ›  技术社区  ›  Prabhu R

是否可以使用Java注释来实现与预处理器类似的功能

  •  3
  • Prabhu R  · 技术社区  · 15 年前

    是否可以创建一个类似于预处理器的功能,该功能在C中可用并由 Antenna . 我们可以使用 APT tool 要实现此功能?有类似主题的文章或链接吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jesper    15 年前

    注释并不是用来转换代码的工具;它们只是将元数据添加到代码中。例如,不能使用注释进行条件编译。

    AS Sun's tutorial on annotations 说:

    注解 提供有关程序的数据,该程序不是程序本身的一部分。它们对所注释的代码的操作没有直接影响。

    Wikipedia 说:

    编译Java源代码时,注释可以由称为注释处理器的编译器插件处理。处理器可以产生信息消息或创建附加的Java源文件或资源,这些资源又可以被编译和处理,但是处理器不能修改注释代码本身。

    所以注释处理器插件不能提供C预处理器所具有的所有功能。

        2
  •  2
  •   Robert Munteanu    15 年前

    可以使用注释处理框架执行编译时任务。它不像预处理器那么强大,因为你不能做如下的事情:

    @RunOnlyOn(OS.Mac) public void someMethod() { ... }
    

    注释处理器的一些好的用例是:

    • 从注释类创建映射文件,例如创建休眠映射文件;
    • 创建具有特定注释的类的索引,例如,从测试类的源文件夹创建testng xml文件;
    • 强制执行通常不可用的编译时约束,例如 having a no-arg constructor .

    请注意,对于Java 6,APT不再需要,因为所有正确声明的注释处理器都参与编译。