【问题标题】:Understanding Annotation Processing in Java了解 Java 中的注解处理
【发布时间】:2011-04-18 05:53:41
【问题描述】:

有人可以描述注释处理的用途吗?
我上次尝试理解注释没有成功。

之前我发过this question,但没有得到满意的答复。
我浏览了许多在线教程,但其中大部分是关于用于以下用途的注释:

  1. 文档
  2. 编译器使用的注解(@Deprecated@Override@SuppressWarnings
  3. 注解处理(@Target@Retention

请有人通过指导我到适当的教程向我解释注释处理

确切地说,我想了解更多关于以下内容的信息 元注释(Java 注释类型):

  • 目标
  • 保留
  • 记录在案
  • 继承

我已经学习了很多教程,例如 this,但无法获得关于注释处理的太多信息。

【问题讨论】:

  • 注解处理很模糊。你具体想要什么信息?运行时处理?编译时处理?特定于 Hibernate 的注释?
  • @Mat ....你能引导我到这个链接,它可以给我关于在 Hibernate 上下文中使用的 @Test 和 @Retention 类型注释的信息
  • 那些不是 Hibernate 注释。他们是核心java。教程在这里:download.oracle.com/javase/6/docs/technotes/guides/language/…
  • 例如,使用 Class.getAnnotations() - download.oracle.com/javase/6/docs/api/java/lang/…
  • 感谢斯蒂芬给出了反射的例子.. :) 现在你能不能也给出一个注释的例子

标签: java hibernate annotations


【解决方案1】:

@Anupam Gupta - 我认为您的问题是您对基本/核心 Java 的理解不够好,无法理解注解和注解处理的真正工作原理。例如,您不了解“运行时反射”的含义这一事实表明您不熟悉 Java 反射,这是核心 Java 的重要组成部分。

注释处理 是一个高级主题,确实超出了 Java 教程流的范围。


值得一提的是,Annotation 文档是hereherehere,您也许可以通过阅读Oracle annotations forum 中的消息获得更多线索。

【讨论】:

  • 谢谢 Stephen ...你是对的,我对 Java 的核心理解还处于初级阶段,我仍处于学习阶段,但我相信你们都已经通过了这个学习阶段......我刚刚阅读并学习了反射..现在你能帮我做注释吗...如果没有教程,请指导我如何获取有关注释的知识..
  • @Anupam Gupta - 我想我无法向你解释这一点。基本上,您需要自己阅读注释文档。但老实说,我认为你是在浪费时间。
【解决方案2】:

询问的注解是用于注解注解的注解。他们的具体目的是:

  • Target:指定可以使用注释的位置。例如。 @Target(ElementType.METHOD) 表示注解只能用在方法上。

  • Retention:指定注释可用的位置/时间。 @Retention(RetentionPolicy.RUNTIME) 表示它在运行时使用反射可用。其他值仅在类文件中或编译时使用(首先提到的选项包括后面的选项)

  • Documentedjavadoc中会出现带有这个注解的注解
  • Inherited 使子类从其超类继承带注释的注解

对于所有四个,javadoc 都非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    相关资源
    最近更新 更多