为java写的注解类的规则在哪里

Where are the rules for annotation classes written for java

我正在尝试了解注解如何理解我们使用注解时要做什么。我不是在谈论什么时候执行等行为 Retention、values 等涵盖了这一点。我想了解注解如何理解该注解的规则。例如,@Override 注解如何知道如何检查函数是否覆盖了 super class 中的方法等等。我尝试了很多挖掘并达到了 here 但我不知道注释规则在哪里写的。这对我来说就像魔法一样。

如前所述,处理器(例如编译器)必须解释注释,但 运行 程序也可以 read/use 注释(例如通过反射)。

例如编译器使用了@Override注解,看它是documentation:

Indicates that a method declaration is intended to override a method declaration in a supertype. If a method is annotated with this annotation type compilers are required to generate an error message unless at least one of the following conditions hold:

  • The method does override or implement a method declared in a supertype.
  • The method has a signature that is override-equivalent to that of any public method declared in Object.

@Override 注释是标准 API 的一部分,其他注释可能是某些框架(例如 .JUnit @Test)或其他注释处理器的一部分,请参阅 Annotation Processing in javac. The developer can also declare annotations, see Annotation Interfaces.


换句话说:
注释就是注释。它就像可以添加到某些元素的标签或标记(例如,添加到方法,class,...)。没有规则或任何类似的直接附加到它。但是一些工具,例如编译器,甚至是普通的 Java 代码(有些 framework/library 或由您编写)可以根据需要读取和处理该注释。

Java 语言规范 (JLS) 中有一些注释需要编译器处理。 @Override 的操作(例如)在编译器中编码,按照 JLS 中的指定执行。与@Deprecated 相同。