【发布时间】:2019-04-18 10:42:09
【问题描述】:
我正在开发一个程序,该程序必须覆盖 Comparable 中的 CompareTo() 才能使 Collections.sort() 工作。因为我正在使用由助手组成的 ArrayList,我必须根据名称对其进行排序。
我浏览了论坛,发现并尝试更改
public class Assistant{
到
public class Assistant implements Comparable<Assistant>{
这反过来允许我在另一个类中使用 Collections.sort() 并且不会警告我任何错误,但是会出现两个新错误。
首先,在同一行
public class Assistant implements Comparable<Assistant>{
它告诉我“它不是抽象的,并且不会覆盖 Comparable 中的 compareTo(Assistant)。”当我转到我创建的 compareTo() 时:
@Override
public int compareTo(Object o2){
Assistant m2 = (Assistant) o2;
if(this.name.compareTo(m2.name) == 0){
return 0;
}else if(this.name.compareTo(m2.name)<0){
return -1;
}else{
return 1;
}
}
(助手的构造函数中只有名称)。
但是,在这个地方我在 @Override 有一个错误: “方法不会覆盖或实现超类型的方法”。
在下一行
public int compareTo(Object o2){
我收到另一个错误(与最后一个有关)告诉我: “名称冲突:Assistant 中的 compareTo(Object) 和 Assistant 中的 compareTo(Assistant) 具有相同的擦除,但都不会覆盖另一个。”
我有点理解这个问题,我没有覆盖原来的 compareTo()。
我是 java 的新手,因此如果有人发现问题,如果您也能解释我做错了什么(或遗漏),我将不胜感激。
谢谢你:)
【问题讨论】:
标签: java oop if-statement comparator comparable