Rumah >Java >javaTutorial >Bagaimana untuk Menyelesaikan Ralat Pelaksanaan Pembanding Apabila Kelas Juga Melaksanakan Sebanding?

Bagaimana untuk Menyelesaikan Ralat Pelaksanaan Pembanding Apabila Kelas Juga Melaksanakan Sebanding?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 07:23:09671semak imbas

How to Resolve Comparator Implementation Errors When a Class Also Implements Comparable?

Mengatasi Ralat dalam Penggunaan Comparator

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.

Pembanding dalam Java

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn