类型<classname>必须实现继承的抽象方法compareable <>。compareTo(object)

时间:2019-04-04 11:47:54

标签: java comparable

我正在创建实现Comparable接口的Java代码。我在类名“ Laps”中遇到以下错误。以下是错误。

类型Laps必须实现继承的抽象方法Comparable.compareTo(Laps)

这有什么问题?有人可以帮忙吗?

class Laps implements Comparable<Laps>
{

int price, memory, ram;
String brand;

public Laps(String brand, int price, int memory, int ram) {
    super();
    this.brand = brand;
    this.price = price;
    this.memory = memory;
    this.ram = ram;
}

public String toString() {
    return "Laps [brand=" + brand + ", price=" + price + ", memory=" + memory + ", ram=" + ram + "]";
}

public int CompareTo(Laps l)
{
    return price>l.price ? 1:-1;
}
}


public class CollectionPractice 
{

public static void main(String[] args) {

    ArrayList<Laps> li = new ArrayList<>();

    li.add(new Laps("Dell",45000,2,3));
    li.add(new Laps("Toshiba",30000,1,4));
    li.add(new Laps("Hp",55000,2,4));
    li.add(new Laps("MacbookBasic",75000,1,1));
    li.add(new Laps("MacbookPro",80000,2,3));
    li.add(new Laps("Alienware",81000,3,6));
    li.add(new Laps("Intel",25000,4,5));
    li.add(new Laps("Lenovo",65000,3,2));


    Collections.sort(li);

    for(Laps l : li)
    {
        System.out.println(l);
    }

}

}

代码未编译。

2 个答案:

答案 0 :(得分:5)

Java区分大小写。

此:

public int CompareTo(Laps l)
{
    return price>l.price ? 1:-1;
}

应该是

public int compareTo(Laps l)
{
    return price>l.price ? 1:-1;
}

,并且您还应该考虑更正逻辑。当价格相等时,您还能得到什么?

您可以对此进行编译时检查,请使用@Override批注:

@Override
public int CompareTo(Laps l)
{
    return price>l.price ? 1:-1;
}

不会编译,因为超类型中没有CompareTo方法。

@Override
public int compareTo(Laps l)
{
    return price>l.price ? 1:-1;
}

将编译并正常工作。

答案 1 :(得分:1)

Java区分大小写。

public int CompareTo(Laps l); // should be `compareTo`

覆盖方法时,请始终添加@Override批注。那会给你更好的错误信息。