如果Annotation是一个接口,那么它如何扩展Object类?
我们将注释定义为接口,如下所示
@interface annot_name { }
我们知道所有注释都默认扩展接口java.lang.annotation.Annotation
。
当我检查Java库中的Annotation
接口时,我发现它覆盖了很多Object类的方法,比如hashCode()
等。
如果Annotation是一个接口,那么它如何扩展Object类并覆盖其方法? 接口只能扩展其他接口而不能扩展类。
所以我的问题是,如果Annotation是一个接口,那么它如何扩展Object类并覆盖其方法
不完全是。 Java语言规范§9.2说
如果接口没有直接的超接口 , 则接口隐式声明一个
public abstract
成员方法m
其中包含签名s
,返回类型r
和throws
子句t
对应于每个public
实例方法m
其中包含签名s
,返回类型r
和throws
子句t
在Object
声明,除非接口显式声明具有相同签名,相同返回类型和兼容throws
子句的方法。
所以任何interface
都会获得这些方法
对于Annotation
,设计人员只是选择在源代码中重新声明它们,以便记录它们的行为。