gpt4 book ai didi

java - 是否存在与自身不可比的 Comparable?

转载 作者:行者123 更新时间:2023-11-29 07:48:41 26 4
gpt4 key购买 nike

Comparable的契约(Contract)中,没有什么可以强制一个对象与自身进行比较。只是

strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y))

这意味着它是推荐 x.compareTo(x)不要扔。但是可以写一个

class X implements Comparable<Y> {
...
}

哪里XY是两个不相关的类。我看不出它有什么用处,但在 HashMap 的 Java 8 版本中甚至还有相应的支票。

  • 是否允许实现X implements Comparable<Y>有两个不相关的类?
  • 有什么意义吗?

我想答案是肯定的和否定的,但这只是一个猜测

最佳答案

Comparable促进比较应与平等一致的契约(Contract),即 (a.compareTo(b) == 0) == a.equals(b) .但它不会强制您这样做,任何奇怪的契约(Contract)都可以强制执行。

所以你可以创建一个:

class DumbInteger implements Comparable<DumbInteger> {
private final int i;
public DumbInteger(int i) { this.i = i; }
public int compareTo(DumbInteger di) { return 0; }
public boolean equals(Object other) { /* checks */ return other.i == this.i; }
}

你还可以创建一个:

class DumberInteger implements Comparable<String> {
private final int i;
public DumberInteger(int i) { this.i = i; }
public int compareTo(String s) { return 0; }
public boolean equals(Object other) { /* checks */ return other.i == this.i; }

public static void main(String[] args) {
System.out.println(new DumberInteger(0).compareTo("abc"));
}
}

但这样做可能没有意义。在任何情况下,这都不是 Java 8 特有的,因为 Comparable 接口(interface)自 Java 2 以来一直存在,并在 Java 5 中“泛化”。

但这可能不是 Comparable 接口(interface)本身的缺陷,因为我认为 Java 中没有创建通用接口(interface)的方法 I<T>只能由属于 T 子类型的类实现.

关于java - 是否存在与自身不可比的 Comparable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23175805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com