【发布时间】:2009-11-11 21:13:58
【问题描述】:
所以,我有一个接口,里面有一堆需要实现的方法,方法名是无关紧要的。
实现这个接口的对象经常被放入集合中,并且还有我希望它们使用的特殊 toString() 格式。
所以,我认为将 hashCode()、equals() 和 toString() 放入接口会很方便,以确保我记得覆盖这些的默认方法。但是当我将这些方法添加到接口时,如果我没有实现这三个方法,IDE/编译器不会抱怨,即使我明确地将它们放在接口中。
为什么不对我强制执行?如果我不实现任何其他方法,它会抱怨,但它不会强制执行这三种方法。是什么赋予了?有什么线索吗?
【问题讨论】:
-
您可以将它们添加到接口中,以在 javadoc 中定义实现应该如何特殊(在 Object 中的合同之上),但没有静态方法让编译器强制执行它。
-
是的,这也是至少将其正式记录在案的好方法。我想远离继承解决方案;这些方法首先位于接口中的原因是,我可以针对它而不是实现进行编码。
标签: java interface equals hashcode tostring