【发布时间】:2016-11-22 12:17:10
【问题描述】:
今天,我正在尝试学习 Java 8 中的一些特性,特别是关于 Lambda 表达式。我像这样创建一个新的 Comaparator :
Comparator<String> strCom = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return 0;
}
};
当我在 Comparator 界面中阅读代码时,我感到很困惑。虽然接口Comparator有两个方法compare()和equals(),我们不需要全部实现。我找到了我们不需要实现方法 equals() here 的一些原因。但我也读过 javadocs
如果您的类声称实现了一个接口,则该接口定义的所有方法都必须出现在其源代码中,然后该类才能成功编译。 What Is an Interface?
那么,有人可以帮我理解这一点吗?不覆盖 equals() 仍然合法吗?
【问题讨论】:
-
如果你想知道两个比较器是否相等,你可以覆盖
equals -
Note that it is always safe not to override Object.equals(Object). However, overriding this method may, in some cases, improve performance by allowing programs to determine that two distinct comparators impose the same order.
标签: java comparator