【问题标题】:Java language specification (jls) - annotations [closed]Java 语言规范 (jls) - 注释 [关闭]
【发布时间】:2019-08-27 09:55:59
【问题描述】:

我很容易通过网络搜索找到很多关于注释使用的文章,但是,当我试图在 Java 语言规范中查找注释描述时,网络搜索只给出了关于接口的章节的链接
https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html 和主表oracle 站点注释上的 jls 内容仅在相同的接口章节中提及。是否有关于 Java 注释的正式官方描述,我在哪里可以阅读?

【问题讨论】:

  • 第 9.6.4 节怎么样。让你不满意?
  • @ChildDetektiv,JLS 9.6:注释类型声明指定了一种新的注释类型,一种特殊的接口类型。为了区分注解类型声明和普通接口声明,关键字interface 前面有一个at 符号(@)
  • 查看§9.6 Annotation Types§9.7 Annotations。这些是§9 接口的小节,因为注解是一种特殊类型的接口,就像枚举是一种特殊类型的类一样。
  • @ChildDetektiv,它们不是编译器的指令,它们是注释。它们存在的主要原因是文档。它们可以用于描述元数据,并且某些类型甚至应该以某种方式使用(例如@Override@FunctionalInterface),但即便如此,这仍是次要的文档。
  • @ChildDetektiv,如果教程没有提到它,那么它要么是关于别的东西,要么它不是很好。

标签: java annotations jls


【解决方案1】:

注解表示注解类型的特定调用(第 9.6 节),通常为该类型的元素提供值。并且在9.6中说注解类型是特殊的接口类型。

9.7. Annotations

9.7。注释

注解是将信息与程序构造相关联的标记,但在运行时不起作用。注释表示注释类型的特定调用(第 9.6 节),通常为该类型的元素提供值。

9.6. Annotation Types

9.6。注释类型

注解类型声明指定了一种新的注解类型,一种特殊的接口类型。为了区分注解类型声明和普通接口声明,关键字 interface 前面有一个 at 符号 (@)。

这就是它们在 JLS 的 (9. Interfaces) 部分中描述的原因。

Oracle 网站上的教程中也有解释(虽然不是从一开始就正确):

Declaring an Annotation Type

致谢:根据 cmets 中提供的帮助回答。

【讨论】: