我有一个看起来像这样既有狗和猫类:覆盖自定义Java类中的compareTo()方法?
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;
}
}
这些类都实现我创建了一个叫做口述的接口看起来像这样:
public interface Speakable
{
public void speak();
}
这口述存在界面因为我需要一个引用变量,它允许我将Dogs和Cats添加到同一个ArrayList中,并且仍然对它们调用speak()方法。
我还需要重写Comparable接口的compareTo()方法,以便比较狗的名称。当调用这个方法时,我认为我的代码如下所示:a.compareTo(b)。如果a大于b,我希望这个新方法返回-1,如果a小于b,则返回1,如果相等,则返回0。
我想我需要的狗类具体实现除口述可比,所以我写的可比界面是这样的:
public interface Comparable<Dog>
{
public int compareTo(Object obj);
}
如何覆盖的compareTo()方法,以满足需要我以上所列?我知道我需要几个if语句,但是我不能想到在不调用新的compareTo()方法中的compareTo()方法的情况下编写此语句的方法。这是合法的吗?比较接口的compareTo()方法不应该包含这些决定吗?
“我怎么覆盖的compareTo()方法,以满足我上面列出的需要” - 什么是您的需求。我可以看到,你只想比较名字 – Rehman
你是什么意思由'a大于b,a小于b'?你如何比较'狗'? – TDG
您正在尝试分类清单?或者列表? –