java.lang.Comparable and equals

2022-09-01 14:17:55

如果我为一个类实现,我是否仍必须重写该方法?还是也会起作用?java.lang.Comparableequals()Comparableequals

如果答案是否定的,那么如果出现一些差异怎么办?假设我在方法中将两个对象称为相等的方式与我将同一类的两个对象称为相等的方式不同。equals()compareTo()Comparable

此外,如果我实现,我是否也必须覆盖?Comparableequals()


答案 1

虽然建议(并且非常明智)暗示这一点(反之亦然),但这不是必需的。 旨在对一系列对象执行排序时使用,而仅测试直接相等性。a.compareTo(b) == 0a.equals(b)Comparableequals()

此链接提供了一些有关正确实现的良好信息。compareTo


答案 2

来自 Java.lang.Comparable 的 Javadoc

强烈建议(尽管不是必需的)自然排序与等阶一致。


推荐