Rumah >Java >javaTutorial >Bagaimana untuk Menyelesaikan Ralat Pelaksanaan Pembanding Apabila Kelas Juga Melaksanakan Sebanding?
Apabila menggunakan antara muka Comparator dalam Java, ralat mungkin timbul jika kelas yang melaksanakan Comparator tidak ditakrifkan dengan betul.
Dalam coretan kod yang disediakan, Comparator dilaksanakan dalam kelas People. Walau bagaimanapun, isu ini berpunca daripada fakta bahawa kelas People juga melaksanakan antara muka Sebanding. Ini membawa kepada konflik, kerana kedua-dua antara muka memerlukan pelaksanaan kaedah bandingkan.
Untuk menyelesaikan ralat ini, adalah perlu untuk menentukan jenis generik untuk antara muka Pembanding dalam perisytiharan kelas People`. Sintaks yang betul ialah:
public class People implements Comparator<People> { ... }
Selain itu, kaedah bandingkan dalam kelas Orang harus diubah suai untuk membandingkan objek Orang dan bukannya objek sembarangan:
public int compare(People p1, People p2) { Integer p1Id = p1.getId(); Integer p2Id = p2.getId(); if (p1Id > p2Id) { return 1; } else if (p1Id < p2Id) { return -1; } else { return 0; } }
Sekarang, kod akan berjaya susun objek Orang berdasarkan ID mereka.
Antara muka Pembanding menyediakan alternatif kepada antara muka Setanding untuk menyusun objek. Ia menawarkan lebih fleksibiliti dalam mentakrifkan kriteria pengisihan dengan melepasi kelas berasingan yang melaksanakan antara muka Pembanding.
Untuk memulakan Pembanding dengan kelas anda, ikut langkah berikut:
Laksanakan antara muka Pembanding dan tentukan menyusun logik dalam kaedah bandingkan.
Lepaskan contoh Pembanding kepada kaedah isihan kelas Koleksi untuk mengisih senarai objek.
Pendekatan ini membenarkan kriteria pengisihan yang lebih kompleks dan boleh berguna apabila bekerja dengan kelas tanpa nama atau ungkapan lambda.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Pelaksanaan Pembanding Apabila Kelas Juga Melaksanakan Sebanding?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!