Saya tidak yakin bagaimana menerapkan antarmuka yang sebanding ke dalam kelas abstrak saya. Saya memiliki contoh kode berikut yang saya gunakan untuk mencoba dan memahaminya:
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;
}
}
Saya memiliki kelas uji yang akan membuat objek bertipe Hewan namun saya ingin memiliki antarmuka yang sebanding di dalam kelas ini sehingga tahun penemuan yang lebih tua peringkatnya lebih tinggi daripada yang rendah. Saya tidak tahu bagaimana melakukan hal ini.
java
comparable
Softey
sumber
sumber
Comparable
. Menerapkan metode yang diperintahkan kepada Anda dengan cara yang diperintahkan.Jawaban:
Anda hanya perlu mendefinisikan itu
Animal implements Comparable<Animal>
yaitupublic class Animal implements Comparable<Animal>
. Dan kemudian Anda harus menerapkancompareTo(Animal other)
metode yang Anda suka.Dengan penerapan ini
compareTo
, hewan dengan tingkat yang lebih tinggiyear_discovered
akan mendapatkan urutan yang lebih tinggi. Saya harap Anda memahamiComparable
dancompareTo
dengan contoh ini.sumber
requires API 19
return ((Integer)this.level).compareTo(other.level);
Kamu butuh:
implements Comparable<Animal>
ke deklarasi kelas; danint compareTo( Animal a )
metode untuk melakukan perbandingan.Seperti ini:
sumber
Saat Anda berada di dalamnya, saya sarankan untuk mengingat beberapa fakta kunci tentang metode bandingkanTo ()
BandingkanTo harus konsisten dengan metode sama dengan misalnya jika dua objek sama melalui sama dengan (), maka bandingkanTo () harus mengembalikan nol jika tidak, jika objek tersebut disimpan dalam SortedSet atau SortedMap, mereka tidak akan berperilaku dengan benar.
CompareTo () harus menampilkan NullPointerException jika objek saat ini dibandingkan dengan objek null sebagai lawan dari equals () yang menampilkan false pada skenario tersebut.
Baca lebih lanjut: http://javarevisited.blogspot.com/2011/11/how-to-override-compareto-method-in.html#ixzz4B4EMGha3
sumber
Implementasikan
Comparable<Animal>
antarmuka di kelas Anda dan berikan implementasiint compareTo(Animal other)
metode di kelas Anda. Lihat Posting Inisumber
Anda perlu mengimplementasikan antarmuka dan menentukan metode bandingkanTo (). Untuk tutorial yang bagus, buka - Tautan titik tutorial atau MyKongLink
sumber
Alternatif yang mungkin dari kode sumber
Integer.compare
metode yang membutuhkanAPI Version 19
adalah:public int compareTo(Animal other) { return Integer.valueOf(this.year_discovered).compareTo(other.year_discovered); }
Alternatif ini tidak mengharuskan Anda untuk menggunakan
API version 19
.sumber
Kelas emp perlu mengimplementasikan antarmuka Comaparable sehingga kita perlu mengganti metode compateTo-nya.
sumber
Berikut kode untuk mengimplementasikan antarmuka yang sebanding dengan java,
sumber
Gunakan Pembanding ...
sumber
Hal ini dapat dengan mudah dilakukan dengan mengimplementasikan kelas publik yang mengimplementasikan Comparable. Ini akan memungkinkan Anda untuk menggunakan metode bandingkanTo yang dapat digunakan dengan objek lain yang ingin Anda bandingkan.
misalnya Anda dapat menerapkannya dengan cara ini:
Saya pikir ini mungkin menyelesaikan tujuan Anda.
sumber