我认为可能,因为Comparator接口包含equals
方法。
答案 0 :(得分:8)
来自section 9.2 of the Java Language Specification:
如果接口没有直接的超接口,那么接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m,返回类型为r, throws在Object中声明的子句t,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法。如果接口在将对象声明为m的情况下显式声明了这样的方法m,那么这是一个编译时错误。
这允许您通过接口类型的引用调用任何Object
方法 - 这是有意义的,因为实现肯定是{{1}的子类}。
编辑:在Object
的情况下,为了提供更多文档,Comparator
显式重新声明了。不过,无论如何,您都可以在equals
引用上致电equals
。
答案 1 :(得分:2)
没有接口实现Object类,但实现
答案 2 :(得分:1)
没有接口永远扩展/继承Object
。只有它实现的类会隐式扩展Object
(如果没有显式扩展)。
Comparator.equals()
方法遵循与Object.equals()
方法相同的签名。其原因在JavaDoc中说明:
但是,覆盖此方法可能, 在某些情况下,通过提高性能 允许程序确定 两个不同的比较器强加了 同样的顺序。
答案 3 :(得分:1)
请参阅以下链接
http://www.docjar.com/html/api/java/util/Comparator.java.html
您可以在代码中看到Comparator接口有自己的equals方法。
答案 4 :(得分:1)
在Java中,每个类最终都会扩展Object
。虽然您无法实现Comparator
本身,但所有比较器实现仍将扩展Object
。
equals()
方法在Comparator
中重新声明,以使Javadoc适应Comparator
对equals()
答案 5 :(得分:1)
接口类型不是Object的正式子类型,但行为就像它们一样:
在这种情况下,接口类型以兼容的方式重新声明equals方法,如果实现类没有提供自己的实现,则使用Object的实现。
这里的规范是以Object.equals的默认实现也符合Comparator.equals的规范,并且Comparator.equals的每个(符合)实现也符合Object.equals规范的方式完成的。
答案 6 :(得分:0)
在java中,永远不能通过从类继承接口来创建接口。所以,不,Comparator
接口不会继承Object
类。
答案 7 :(得分:0)
接口类似于角色,其职责声明为接口方法。
作为接口的比较器只列出了实现此接口的类需要提供的所有职责。
实现Comparator的类的对象将是Object类的子类。