我正在创建实现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);
}
}
}
代码未编译。
答案 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
批注。那会给你更好的错误信息。