如果Annotation是一个接口,那么它如何扩展Object类?

我们将注释定义为接口,如下所示

@interface annot_name { } 

我们知道所有注释都默认扩展接口java.lang.annotation.Annotation

当我检查Java库中的Annotation接口时,我发现它覆盖了很多Object类的方法,比如hashCode()等。

如果Annotation是一个接口,那么它如何扩展Object类并覆盖其方法? 接口只能扩展其他接口而不能扩展类。

所以我的问题是,如果Annotation是一个接口,那么它如何扩展Object类并覆盖其方法

不完全是。 Java语言规范§9.2说

如果接口没有直接的超接口则接口隐式声明一个public abstract成员方法m其中包含签名s ,返回类型rthrows子句t对应于每个public实例方法m其中包含签名s ,返回类型rthrows子句tObject声明,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法。

所以任何interface都会获得这些方法

对于Annotation ,设计人员只是选择在源代码中重新声明它们,以便记录它们的行为。