Faire votre propre classe 'Comparables'
J'ai suivi un tutoriel, mais a échoué à faire mon Country
classe Comparable
pour mon BST
.
Principal:
BinarySearchTree A = new BinarySearchTree();
Country a = new Country("Romania", "Bucharest", 1112);
A.insert(a);
Catégorie de personnes de pays:
public int compareTo(Object anotherCountry) throws ClassCastException {
if (!(anotherCountry instanceof Country))
throw new ClassCastException("A Country object expected.");
String anotherCountryName = ((Country) anotherCountry).getName();
int i = this.name.compareTo(anotherCountryName);
if(i < 0){
return -1;
} else {
return 0;
}
}
erreur:
@Override
public int compareTo(Object anotherCountry) throws ClassCastException {
if (!(anotherCountry instanceof Country))
throw new ClassCastException("A Country object expected.");
String anotherCountryName = ((Country) anotherCountry).getName();
return this.name.compareTo(anotherCountryName);
Description Resource Path Location Type
Conflit de nom: La méthode compareTo(Object) de type Pays a le même effacement, compareTo(T) de type Comparable, mais ne pas le remplacer Country.java /Lab2_prob 4/src 17 Java Problème
Description Resource Path Location Type
The method compareTo(Object) of type Country must override or implement a supertype method Country.java /Lab2_prob 4/src line 17 Java Problem
et classe:
public class Country implements Comparable<Country>{
private String name;
private String capital;
private int area;
Description Resource Path Location Type
Le type de Pays doivent mettre en œuvre les hérité de la méthode abstraite Comparables.compareTo(Pays) Country.java /Lab2_prob 4/src 2 Java Problème
Est-ce que votre
Quel est le problème ou l'erreur êtes-vous réellement?
désolé il ajouté à l'erreur.
Country
classe étendre Comparable<Country>
?Quel est le problème ou l'erreur êtes-vous réellement?
désolé il ajouté à l'erreur.
OriginalL'auteur Bogdan M. | 2012-10-24
Vous devez vous connecter pour publier un commentaire.
Votre
Country
classe doit implémenterComparable
:Alors votre
compareTo
méthode devrait ressembler à ceci:Note la signature de
compareTo
. Le paramètre peut (et doit) être de typeCountry
pasObject
. Ceci est réalisé grâce au paramètre de type générique surComparable
. L'avantage est que vous n'avez pas à vérifier le type plus. L'inconvénient est que vous ne pouvez comparerCountry
à d'autresCountry
les objets (ou les sous-types), mais dans la plupart des cas, c'est ce que vous voulez de toute façon. Si non, vous devez modifier le paramètre de type. E. g. si vous utilisezComparable<Object>
la signature decompareTo
peut êtreObject
de nouveau. Vous pouvez lire les génériques ici si vous le souhaitez.Comparable
est une interface. Désolé pour l'erreur.Pouvez vous s'il vous plaît vérifier les erreurs que j'ai obtenu après les corrections que vous m'a suggéré? jolie s'il vous plaît
édité ma réponse
OriginalL'auteur André Stannek
un Comparable doit retourner:
Cependant, votre code est le retour de -1 ou 0, ce qui n'est pas correcte, ce qui implique que
this
peut être moins que les autres de l'objet ou de l'égalité, mais pas plus!Il n'est pas nécessaire de modifier les valeurs retournées par
name.compareTo()
- vous pouvez simplement retourner directement.OriginalL'auteur DNA