根据Java-Doc的java.util。映射,hashCode
和equals
方法是从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。(即使它们不像你期望的那样工作,如果你不在实现类中重写它们)