首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以使用Java注释来实现与预处理器类似的功能

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

Stack Overflow用户
提问于 2009-09-23 07:51:42
回答 2查看 3.3K关注 0票数 3

有没有可能创建一个类似于预处理器的功能,它可以用C语言实现,并由Antenna提供。我们可以使用APT tool来实现此功能吗?有没有类似主题的文章或链接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-23 07:57:34

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

正如Sun's tutorial on annotations所说:

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

Wikipedia说:

编译Java源代码时,可以由称为批注处理器的编译器插件处理批注。处理程序可以生成信息性消息或创建额外的Java源文件或资源,这些文件或资源可以被编译和处理,但处理程序不能修改带注释的代码本身。

因此,批注处理器插件无法为您提供C预处理器所具有的所有功能。

票数 2
EN

Stack Overflow用户

发布于 2009-09-23 07:58:44

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

代码语言:javascript
代码运行次数:0
运行
复制
@RunOnlyOn(OS.Mac) public void someMethod() { ... }

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

  • 从带注释的类创建映射文件,例如创建hibernate映射文件;
  • 创建具有特定注释的类的索引,例如从通常不可用的测试测试编译时约束的源文件夹(例如having a no-arg constructor.

)创建testng文件

请注意,从Java6开始,不再需要APT,因为所有正确声明的批注处理器都会参与编译。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1464544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档