Question

Lors de la compilation du code ci-dessous, je reçois l'erreur suivante:

PersonalInformation n'est pas abstraite et ne remplace pas abstraite Méthode compareTo (Object) dans Comparable

Je suppose que cela signifie que j'ai un problème avec ma méthode de compareTo. Mais tout semble être bien. Quelqu'un at-il une 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);
}

}
Était-ce utile?

La solution

Pour ce faire:

public int compareTo(Object pi) {
    return ((PersonalInformation )(this.gender)).compareTo(((PersonalInformation ) pi).gender);
}

ou mieux

public class PersonalInformation implements Comparable<PersonalInformation>

Si vous implémentez l'interface Comparable vous devez l'appliquer soit pour tous les objets en utilisant la première méthode ou tapez votre classe la deuxième manière.

Autres conseils

Voir juergen d'la réponse de, beaucoup mieux.

Vous surcharger la méthode:

public int compareTo(PersonalInformation pi)
{
    return (this.gender).compareTo(pi.gender);
}

au lieu de la redéfinir:

public int compareTo(Object pi)

Il pourrait être quelque chose comme:

public int compareTo(Object pi)
{
    if ( ! pi instanceof PersonalInformation )
        return false;
    return (this.gender).compareTo( (PersonalInformation)pi.gender );
}

Vous devez mettre en œuvre Comparable<PersonalInformation> plutôt que Comparable pour votre classe pour compiler et travail.

Si vous implémentez Comparable, la signature de la méthode prévue est compareTo(Object o) qui manque dans votre classe et par conséquent l'erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top