我们将注释定义为如下接口
@interface annot_name {
}
我们知道,默认情况下,所有注释都扩展了接口java.lang.annotation.Annotation
。
当我检查Annotation
接口的java库时,我发现它正在对对象类的许多方法(如hashCode()
等)进行过度修改。
如果注释是一个接口,那么它如何扩展对象类并覆盖其方法?接口只能扩展其他接口,而不能扩展类。
发布于 2014-03-17 19:38:10
所以我的问题是,如果注释是一个接口,那么它如何扩展对象类并覆盖它的方法?
不完全同意。Java语言规范§9.2说
如果接口没有直接的超级接口,则该接口隐式声明一个具有签名的
public abstract
s
**,返回类型**r
**,的成员方法。和**throws
子句t
,对应于在E 257
Object
**,中声明的每个在E 257Object
**,中声明的具有签名s
**,返回类型**r
**,和**throws
子句<代码>E 252t
的public
实例方法m
,除非有相同签名的方法,接口显式声明相同的返回类型和兼容的**throws
子句。
所以任何interface
都会得到这些方法。
对于Annotation
,设计人员只是选择在源代码中重新声明它们,以便将它们的行为记录下来。
https://stackoverflow.com/questions/22463691
复制相似问题