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

问题描述

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

解决方法

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

例如编译器使用了 @Override 批注,参见它的 documentation

表示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型对方法进行注释编译器需要生成错误消息,除非至少满足以下条件之一:

  • 该方法确实覆盖或实现了在超类型中声明的方法。
  • 该方法具有一个签名,该签名与在 Object 中声明的任何公共方法的签名等效。

@Override 批注是标准 API 的一部分,其他批注可能是某些框架(例如 .JUnit @Test)或其他批注处理器的一部分,请参阅 {{1} 中的 Annotation Processing }}。开发人员还可以声明注释,请参阅 Annotation Interfaces