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

时间:2014-03-17 19:34:22

标签: java annotations

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

@interface annot_name {

}

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

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

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

1 个答案:

答案 0 :(得分:18)

  

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

不完全是。 The Java Language Specification §9.2 says

  

如果接口没有直接的超级接口,则接口   隐式声明带有签名的public abstract成员方法m   s,返回类型r以及与throws对应的t子句public   带有签名m的实例方法s,返回类型rthrows子句t   在Object中声明,除非具有相同签名的方法相同   返回类型,并且显式声明兼容的throws子句   界面。

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

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