Saya memiliki enum SOME_ENUM
:
public enum SOME_ENUM {
EN_ONE,
EN_TWO,
EN_THREE;
}
Akan SOME_ENUM.values()
selalu mengembalikan enum di urutan deklarasi enum:
EN_ONE, EN_TWO, EN_THREE
? Apakah ini aturan atau tidak ada jaminan tidak akan diubah di rilis JDK berikutnya?
java
enums
specifications
Skarab
sumber
sumber
Jawaban:
Spesifikasi bahasa Java menggunakan bahasa eksplisit ini:
Jadi, ya, mereka akan dikembalikan dalam urutan deklarasi. Perlu dicatat bahwa urutan dapat berubah seiring waktu jika seseorang mengubah kelas, jadi berhati-hatilah dalam menggunakan ini.
sumber
Ya, dijamin akan mengembalikannya dalam urutan itu.
Namun Anda harus menghindari mengandalkan itu, dan pada
ordinal()
nilainya, karena dapat berubah setelah memasukkan item baru, misalnya.sumber
Ini ditentukan oleh urutan nilai Anda dideklarasikan. Namun, tidak ada jaminan bahwa Anda (atau orang lain) tidak akan menyusun ulang / menyisipkan / menghapus nilai di masa mendatang . Jadi, Anda tidak harus bergantung pada pesanan.
Java Efektif 2nd. Edisi mendedikasikan Item 31 untuk topik terkait erat: Gunakan bidang contoh sebagai ganti ordinal :
sumber
enum
untuk beberapa tujuan yang tidak dimaksudkan untuk itu.Jawaban lain bagus, tapi jangan komentari ini:
Saya tidak percaya bahwa ada jaminan pada JDK di masa mendatang, jadi Anda tidak perlu mengkhawatirkannya. Tidak akan ada cara untuk menegakkannya, pemimpin JDK di masa depan mungkin memutuskan untuk mengingkari jaminan tersebut. Ini seperti sistem parlemen Westminster: "Tidak ada Parlemen yang dapat mengikat parlemen masa depan."
Konon, sejarah JDK menunjukkan konsistensi yang sangat baik. Mereka tidak membuat banyak perubahan yang merusak, jadi Anda bisa yakin bahwa perilaku yang ditentukan saat ini (tidak hanya diamati) akan dipertahankan.
sumber