Rumah >Java >javaTutorial >Bagaimana untuk Mengatasi Kaedah equals() dengan betul dalam Java untuk Perbandingan Objek Tersuai?
Mengatasi Kaedah Equals dalam Java
Di Java, kaedah equals bertanggungjawab untuk menentukan sama ada dua objek adalah sama. Secara lalai, kaedah equals membandingkan rujukan objek, yang bukan tingkah laku yang diingini untuk banyak kelas tersuai. Untuk mengatasi kaedah equals dan mentakrifkan semantik kesaksamaan tersuai, garis panduan berikut harus dipatuhi:
Penyelesaian:
Kod yang disediakan cuba membandingkan medan Integer (umur) menggunakan kaedah sama, yang bertujuan untuk Strings sahaja. Untuk membetulkannya, semakan kesaksamaan untuk medan umur hendaklah digantikan dengan perbandingan menggunakan operator ==:
... } else { People otherPeople = (People) other; result = name.equals(other.name) && other.age == age; } ...
Penggunaan:
Kod berikut menunjukkan cara menggunakan kaedah sama yang diganti:
... // Add several Person objects to an ArrayList people.add(new Person("Subash Adhikari", 28)); people.add(new Person("K", 28)); people.add(new Person("StackOverflow", 4)); people.add(new Person("Subash Adhikari", 28)); // Compare each pair of Person objects using the overridden equals method for (int i = 0; i < people.size() - 1; i++) { for (int y = i + 1; y <= people.size() - 1; y++) { boolean check = people.get(i).equals(people.get(y)); System.out.println("-- " + people.get(i).getName() + " - VS - " + people.get(y).getName()); System.out.println(check); } } ...
Kod ini akan menghasilkan yang berikut output:
-- Subash Adhikari - VS - K false -- Subash Adhikari - VS - StackOverflow false -- Subash Adhikari - VS - Subash Adhikari true -- K - VS - StackOverflow false -- K - VS - Subash Adhikari false -- StackOverflow - VS - Subash Adhikari false
Output ini menunjukkan bahawa kaedah overridden equals sedang membandingkan objek Person dengan betul berdasarkan nama dan medan umurnya.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Kaedah equals() dengan betul dalam Java untuk Perbandingan Objek Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!