When compiling the code below, I get the following error:
PersonalInformation is not abstract and does not override abstract method compareTo(Object) in Comparable
I assume that means I have a problem with my compareTo
method. But everything seems to be all right. Anyone have a suggestion?
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);
}
}
Do this:
public int compareTo(Object pi) {
return ((PersonalInformation )(this.gender)).compareTo(((PersonalInformation ) pi).gender);
}
or better
public class PersonalInformation implements Comparable<PersonalInformation>
If you implement the Comparable
Interface you have to implement it either for all Objects using the first method or type your class the second way.