Rumah >Java >javaTutorial >Java Enums: Patutkah Anda Gunakan == atau equals() untuk Membandingkan Ahli?

Java Enums: Patutkah Anda Gunakan == atau equals() untuk Membandingkan Ahli?

Barbara Streisand
Barbara Streisandasal
2024-11-28 11:18:11346semak imbas

Java Enums: Should You Use == or equals() to Compare Members?

Membandingkan Ahli Java Enum: == vs. equals()

Apabila bekerja dengan jenis enum Java, pembangun sering menghadapi persoalan sama ada untuk menggunakan pengendali kesamaan (==) atau kaedah equals() untuk membandingkan ahli enum. Soalan ini timbul kerana enum disusun ke dalam kelas, yang membawa kepada kekeliruan tentang pelaksanaan asas.

Memahami Java Enum

Java enum ialah kelas dengan pembina persendirian dan ahli statik awam mewakili nilai enum. Ahli ini pada asasnya adalah pemalar dan tidak boleh diubah.

Membandingkan Ahli Enum

Kedua-dua operator == dan kaedah equals() boleh digunakan untuk membandingkan ahli enum. Kaedah equals() menyediakan cara standard untuk membandingkan objek dalam Java, manakala == membandingkan rujukan objek yang dibandingkan.

Kesamaan Teknikal

Memeriksa sumber kod kaedah equals() mendedahkan bahawa ia hanya menunda kepada operator ==. Ini bermakna, secara teknikal, kedua-dua pendekatan adalah setara untuk membandingkan ahli enum.

Pendekatan Disyorkan

Walau bagaimanapun, secara amnya disyorkan untuk menggunakan operator == untuk membandingkan enum ahli. Pendekatan ini ialah:

  • Null-Safe: Operator == mengembalikan palsu apabila membandingkan ahli enum kepada null, manakala equals() mungkin membuang NullPointerException.

Contoh

Kod berikut menunjukkan penggunaan kedua-dua == dan equals() untuk membandingkan ahli enum:

public enum MyEnum {
    A, B, C
}

public static void main(String[] args) {
    MyEnum a = MyEnum.A;
    MyEnum b = MyEnum.B;

    System.out.println(a == b); // false
    System.out.println(a.equals(b)); // false
}

Dalam contoh ini, kedua-dua == dan equals() mengembalikan false kerana a dan b merujuk kepada ahli enum yang berbeza.

Atas ialah kandungan terperinci Java Enums: Patutkah Anda Gunakan == atau equals() untuk Membandingkan Ahli?. 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