编译下面的代码时,我收到以下错误:
PersonalInformation不是抽象的,不会覆盖抽象 方法compareTo(Object)in Comparable
我认为这意味着我的compareTo
方法存在问题。但一切似乎都没事。有人有建议吗?
import java.util.*;
public class PersonalInformation implements Comparable
{
private String givenName;
private String middleInitial;
private String surname;
private String gender;
private String emailAddress;
private String nationalId;
private String telephoneNum;
private String birthday;
public PersonalInformation(String gN, String mI,
String sur, String gen, String eMa, String natId,
String teleNum, String birthd)
{
givenName = gN;
middleInitial = mI;
surname = sur;
gender = gen;
emailAddress = eMa;
nationalId = natId;
telephoneNum = teleNum;
birthday = birthd;
}
public int compareTo(PersonalInformation pi)
{
return (this.gender).compareTo(pi.gender);
}
}
答案 0 :(得分:18)
这样做:
public int compareTo(Object pi) {
return ((PersonalInformation )(this.gender)).compareTo(((PersonalInformation ) pi).gender);
}
或更好
public class PersonalInformation implements Comparable<PersonalInformation>
如果您实现了Comparable
接口,则必须使用第一种方法为所有对象实现它,或者以第二种方式键入您的类。
答案 1 :(得分:6)
你正在重载方法:
public int compareTo(PersonalInformation pi)
{
return (this.gender).compareTo(pi.gender);
}
而不是覆盖它:
public int compareTo(Object pi)
可能是这样的:
public int compareTo(Object pi)
{
if ( ! pi instanceof PersonalInformation )
return false;
return (this.gender).compareTo( (PersonalInformation)pi.gender );
}
答案 2 :(得分:5)
您需要为您的班级实施Comparable<PersonalInformation>
而不是Comparable
来编译和工作。
如果您正在实现Comparable,那么您的类中缺少预期的方法签名compareTo(Object o)
,因此错误。