Membandingkan Ahli Java Enum: == or equals()
Semasa bekerja dengan Java enums, persoalan biasa timbul mengenai operator yang sesuai untuk digunakan untuk membandingkan ahli enum. Secara tradisinya, pembangun telah menggunakan kaedah .equals(), seperti yang dilihat dalam:
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
Walau bagaimanapun, beberapa contoh menunjukkan penggunaan operator == sebagai perbandingan:
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
Yang daripada pengendali ini harus diutamakan untuk membandingkan ahli enum?
Persamaan Teknikal dan Null Keselamatan
Menariknya, kedua-dua pendekatan adalah betul secara teknikal. Kod sumber untuk .equals() dalam Java enums mendedahkan bahawa ia hanya mewakilkan kepada ==. Walau bagaimanapun, terdapat perbezaan yang ketara: == juga menyediakan keselamatan nol.
Dengan menggunakan ==, anda boleh melindungi daripada rujukan null berpotensi dalam perbandingan ahli enum. Aspek ini menjadi sangat relevan apabila bekerja dengan kod yang diwarisi daripada sistem warisan atau pustaka pihak ketiga yang nilai nol sekali-sekala mungkin berlaku.
Pengesyoran
Memandangkan kelebihan halus null keselamatan dan fakta bahawa kedua-dua == dan .equals() pada asasnya melakukan perbandingan yang sama, secara amnya dinasihatkan untuk menggunakan == apabila membandingkan ahli enum Java. Pengesyoran ini sejajar dengan keutamaan peribadi pengarang juga.
Atas ialah kandungan terperinci Membandingkan Ahli Java Enum: Sekiranya Anda Menggunakan == atau sama dengan()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!