当前位置: 首页 > 面试题库 >

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

姚洲
2023-03-14
问题内容

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

@interface annot_name {

}

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

当我检查Annotation接口的Java库时,我发现它覆盖了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,设计师只是选择在源代码中重新声明它们,以便他们可以记录其行为。



 类似资料:
  • 问题内容: 如果您定义如下界面 您可以在任何代码段中编写如下 那么equals方法从何而来,接口是否还扩展了超类Object?,如果确实如此,接口如何扩展类? 假设让该接口扩展超类Object,那么如果您看到为什么像Set这样的集合接口定义了equals()和hashCode()方法呢?所有类都扩展了Object类,因此,如果您在Object类中存在的接口中定义任何抽象方法,则实现该接口的人无需实

  • 问题内容: 我正在学习Java,并且希望将自己的课堂变成可观察的课堂。 但是我已经有了它扩展了另一个类。 我该怎么办? 问题答案: 我建议避免完全使用该类,而应 定义事件特定的侦听器和相应的事件定义 。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。 强制您使用它来表示事件,然后使用来检查事件类型,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看j

  • 假设我有注释类: 如何从它扩展接口?编译器在这方面失败: 游乐场链接:https://www.typescriptlang.org/play/#src=const匿名类=类{} let a: typeof匿名类; 接口I扩展类型的匿名类{

  • 我想添加类链接,如果它是当前的URL。 URL结构如下:; 我可以使用以下代码将类添加到“当前URL链接”: 如何检查当前页面的URL(搜索参数)和链接的URL(搜索参数)是否相同,然后才能将类添加到此链接? 例如,如果我在页面:,并且如果链接href是,那么我也要向此链接添加类。(注意:考虑到这两个链接具有相同参数。)

  • 或者特别是:两者之间的区别是什么 和 它会以任何方式影响实现类吗?

  • 我有一个泛型类型K,我想验证K是否实现了接口可比性。这是我的代码: 但是代码不起作用。我不想将所有K限制为实现可比性。我已经有了另一个TreeMapVector相似度类。如果K实现了接口可比性,我将使用TreeMapVector相似度类返回结果。 你认为我如何能解决这个问题?谢了。