gpt4 book ai didi

java - 覆盖自定义 Java 类中的 compareTo() 方法?

转载 作者:行者123 更新时间:2023-11-30 06:12:19 25 4
gpt4 key购买 nike

我有一个 Dog 和 Cat 类,看起来像这样:

public class Dog implements Speakable
{
private String name;

public Dog(String name)
{
this.name = name;
}

public void speak()
{
System.out.println("Woof! Woof!");
}

public String toString()
{
return "Dog: " + name;
}

}

这些类都实现了我创建的名为 Speakable 的接口(interface),如下所示:

public interface Speakable
{
public void speak();
}

存在这个 Speakable 接口(interface)是因为我需要一个引用变量,它允许我将 Dogs 和 Cats 添加到同一个 ArrayList 并仍然调用它们的 speak() 方法。

我还需要覆盖 Comparable 接口(interface)的 compareTo() 方法,以便比较狗的名字。调用此方法时,我认为我的代码将如下所示:a.compareTo(b)。我希望这个新方法在 a 大于 b 时返回 -1,在 a 小于 b 时返回 1,在它们相等时返回 0。

我想除了 Speakable 之外我还需要 Dog 类来专门实现 Comparable 所以我写的 Comparable 接口(interface)是这样的:

public interface Comparable<Dog>
{
public int compareTo(Object obj);
}

如何覆盖 compareTo() 方法以满足上面列出的需求?我知道我将需要几个 if 语句,但我想不出一种不在新的 compareTo() 方法中调用 compareTo() 方法的情况下编写它的方法。那是合法的吗?可比较接口(interface)中的 compareTo() 方法不应该已经包含这些决定吗?

最佳答案

删除您的自定义 Comparable ,并使用 Java Comparable<T> .你可以修改 Speakableextend Comparable .类似的东西,

public interface Speakable extends Comparable<Speakable>

然后每个Speakable也是一个Comparable<Speakable>

关于java - 覆盖自定义 Java 类中的 compareTo() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018561/

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