abstract compareTo method not being overrided

bitva picture bitva · Feb 20, 2012 · Viewed 24.6k times · Source

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);
}

}

Answer

juergen d picture juergen d · Feb 20, 2012

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.