Ich bin nicht sicher, wie ich eine vergleichbare Schnittstelle in meine abstrakte Klasse implementieren soll. Ich habe den folgenden Beispielcode, mit dem ich versuche, mich darum zu kümmern:
public class Animal{
public String name;
public int yearDiscovered;
public String population;
public Animal(String name, int yearDiscovered, String population){
this.name = name;
this.yearDiscovered = yearDiscovered;
this.population = population; }
public String toString(){
String s = "Animal name: "+ name+"\nYear Discovered: "+yearDiscovered+"\nPopulation: "+population;
return s;
}
}
Ich habe eine Testklasse, die Objekte vom Typ Animal erstellt. Ich möchte jedoch eine vergleichbare Schnittstelle innerhalb dieser Klasse haben, damit ältere Jahre der Entdeckung einen höheren Rang als niedrig haben. Ich habe jedoch keine Ahnung, wie ich das anstellen soll.
java
comparable
Softey
quelle
quelle
Comparable
. Implementieren Sie die Methode, die Sie dazu auffordern, so, wie es Ihnen sagt.Antworten:
Sie müssen nur das definieren,
Animal implements Comparable<Animal>
dhpublic class Animal implements Comparable<Animal>
. Und dann müssen Sie diecompareTo(Animal other)
Methode so implementieren , wie Sie es möchten.Mit dieser Implementierung von
compareTo
werden Tiere mit einem höherenyear_discovered
Wert höher geordnet. Ich hoffe, Sie bekommen die Idee vonComparable
undcompareTo
mit diesem Beispiel.quelle
requires API 19
return ((Integer)this.level).compareTo(other.level);
Du brauchst:
implements Comparable<Animal>
der Klasse Erklärung; undint compareTo( Animal a )
Methode, um die Vergleiche durchzuführen.So was:
quelle
Während Sie dabei sind, empfehle ich Ihnen, sich einige wichtige Fakten zu compareTo () -Methoden zu merken
CompareTo muss mit der Methode equals übereinstimmen, z. B. wenn zwei Objekte über equals () gleich sind, muss compareTo () Null zurückgeben. Andernfalls verhalten sich diese Objekte nicht richtig, wenn sie in SortedSet oder SortedMap gespeichert sind.
CompareTo () muss eine NullPointerException auslösen, wenn das aktuelle Objekt mit dem Nullobjekt verglichen wird, im Gegensatz zu equals (), die in einem solchen Szenario false zurückgeben.
Lesen Sie mehr: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
quelle
Implementieren Sie die
Comparable<Animal>
Schnittstelle in Ihrer Klasse und stellen Sie die Implementierung derint compareTo(Animal other)
Methode in Ihrer Klasse bereit . Siehe diesen Beitragquelle
Sie müssten die Schnittstelle implementieren und die compareTo () -Methode definieren. Ein gutes Tutorial finden Sie unter - Tutorials point link oder MyKongLink
quelle
Mögliche Alternative zum Quellcode der
Integer.compare
Methode, die erfordert,API Version 19
ist:public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }
Diese Alternative erfordert keine Verwendung
API version 19
.quelle
Die Emp-Klasse muss die Comaparable-Schnittstelle implementieren, damit die compateTo-Methode überschrieben werden kann.
quelle
Hier ist der Code zum Implementieren einer Java-vergleichbaren Schnittstelle:
quelle
Verwenden Sie einen Komparator ...
quelle
Dies kann leicht durch Implementieren einer öffentlichen Klasse erreicht werden, die Comparable implementiert. Auf diese Weise können Sie die compareTo-Methode verwenden, die mit jedem anderen Objekt verwendet werden kann, mit dem Sie vergleichen möchten.
Sie können es beispielsweise folgendermaßen implementieren:
Ich denke, das könnte Ihren Zweck lösen.
quelle