Interface java.util.Map是否从Object类重写hashCode()和equals() ?



根据Java-Doc的java.util。映射,hashCodeequals方法是从Object类重写的。但是接口不继承Object类,那么Map接口如何覆盖Object类的方法呢?

@Override注释特别考虑了从Object继承的方法:

引用Java语言规范,§9.6.4.4 @Override:

如果方法声明用注释@Override注释,但该方法没有覆盖或实现超类型中声明的方法,或者不覆盖等同于Object public方法,则会发生编译时错误。

这意味着@Override可以在实现类中注释将从Object继承的接口方法,即使接口本身不继承Object

用于防止意外声明与Object方法冲突的接口方法。

Javadoc意味着每个实现类都应该重写方法来实现Javadoc中记录的行为。

这是因为接口不能被实例化为接口。你使用它作为一个接口,但是JVM引用了一个实现接口的Object实例,所以作为一个Object,它有toString, hashCode和equals。(即使它们不像你期望的那样工作,如果你不在实现类中重写它们)

最新更新