当前位置: 首页 > 知识库问答 >
问题:

Java 11中的CharSequence接口添加了“compare”方法。为什么“compareTo”不是可比较的接口?

尉迟远
2023-03-14

CharSequence接口在Java11中获得了一个新的静态方法:比较

此方法返回int:

如果两个字符序列相等,则值为0;如果第一个字符序列在词典编纂上小于第二个字符序列,则为负整数;或者,如果第一个字符序列在词典上大于第二个字符序列,则为正整数。

这听起来就像是可比的。然而,Java团队显然选择了不让CharSequence可比。为什么不呢?我无法理解这种逻辑

什么是关于CharSequence::compare,这将不是一个适当的适合比较e::compareTo

共有1个答案

松思源
2023-03-14

添加可比

有关讨论,请参阅OpenJDK开发人员关于该主题的这篇文章。

这篇文章的提示:一个CharSequence::compare形式的方法引用适合作为一个比较器。

 类似资料:
  • 我在添加上面提到的两个方面有点麻烦。我有两节课。员工和公司。 employee类保存一些关于雇员的信息,实例变量包括他们的名字、日期、numOfSales等,还有一些方法,如setName、getName等。 然后需要编写一个compareTo()方法,我把它放在employee类中?这将允许员工按其numOfSales实例变量存储的值的升序进行排序。

  • 谁能解释一下为什么下面的代码不起作用: 但这一个有效: 换句话说,与创建普通类实例相比,接口实现何时是可互换的?当我使用compareTo()方法时会出现错误,该方法是Comparable接口的一部分,由所有包装类(如整数)实现。 所以我猜

  • 今天,我试图学习Java8中的一些特性,特别是关于Lambda表达式。我创建了一个新的Comaparator,如下所示: 当我阅读比较器接口内的代码时,我感到困惑。虽然通过接口比较器有两个方法compare()和equals(),但我们不需要全部实现它们。我已经找到了一些原因,为什么我们不需要在这里实现方法equals()。但我也读过javadocs 如果类声明实现接口,则该接口定义的所有方法必须

  • 问题内容: 我正在研究Go中一个简单的链表实现,以进行学习。元素的定义如下: 如您所见,Value可以是满足空接口的任何值。现在,作为一项新功能,我要进行创建,以便在将新元素插入列表时,它以排序方式插入-每个元素将是<=下一个元素。 为了做到这一点,我编写了以下方法: 编译器抱怨这是公平的。因此,我知道在Element typedef中,我应该将Value限制为可以使用运算符进行比较的类型。我在研

  • 请帮助我了解什么是好的设计在这里,详细。

  • 我们知道,如果我们想创建一个类的对象,就必须实现接口的所有方法。但是为什么不需要在java中同时实现接口的和? 我同意目的已经解决了,但即使如此,如果我们重写(),为什么不强制重写()?