Artikel ini terutama mempelajari konten enumset yang relevan alih -alih domain bit di java, seperti yang dirinci di bawah ini.
Membaca catatan "Java Chinese Versi 2" Efektif "
Notasi domain bit memungkinkan operasi bit dilakukan secara efektif seperti serikat dan persimpangan. Tetapi domain bit memiliki semua kelemahan selalu menerangi enumerasi int, dan bahkan lebih banyak lagi. Ketika bitfield dicetak dalam bentuk digital, jauh lebih sulit untuk menerjemahkan konstanta enumerasi int sederhana. Bahkan tidak ada cara mudah untuk melintasi semua elemen yang diwakili oleh bitfield.
// Konstanta Enumerasi Bit Bit - Tes kelas obsoletepublic {public static final byte style_bold = 1 << 0; // 1 byte final statis public style_italic = 1 << 1; // 2 byte final statis public style_underline = 1 << 2; // 4 byte final statis publik style_strikethrough = 1 << 3; // 6 // Parameter adalah bitwise atau nol atau lebih style_ konstanta void publik applyStyles (int styles) {...}}Paket Java.util menyediakan kelas enumset untuk secara efektif mewakili beberapa koleksi beberapa nilai yang diekstraksi dari satu jenis enum. Kelas ini mengimplementasikan antarmuka yang ditetapkan, memberikan fungsionalitas yang kaya, jenis keamanan, dan interoperabilitas yang dapat diperoleh dari implementasi set lainnya. Namun, dalam implementasi spesifik internal, setiap konten enumset direpresentasikan sebagai vektor bit. Jika jenis enum yang mendasarinya memiliki 64 elemen atau lebih sedikit - kebanyakan dari mereka. Seluruh enumset diwakili oleh satu panjang, sehingga kinerjanya lebih baik daripada kinerja domain atas. Pemrosesan batch, seperti removeall dan retainall, diimplementasikan menggunakan algoritma bit. Sama seperti mengganti domain bit secara manual. Tetapi Anda dapat menghindari kesalahan yang rentan terhadap operasi manual dan kode yang kurang elegan, karena Enumset melakukan tugas yang sulit untuk Anda. `
// enumset - pengganti modern untuk teks kelas bit fieldspublic {public enum style {bold, miring, garis bawah, strikethrough}; // Set apa saja dapat dilewati, tetapi enumset jelas merupakan void publictyles terbaik (set <tely> styles) {System.out.println (styles); } public void test () {applyStyles (enumset.of (style.bold, style.italic)); }} Jalankan test() dan output [BOLD, ITALIC] .
Kelas Enumset menggabungkan keunggulan kesederhanaan dan kinerja domain BIT dan semua keunggulan dari jenis enum, sehingga tidak ada alasan untuk menggunakan notasi domain bit lagi. Kecuali itu adalah bidang yang merupakan protokol komunikasi.
Tetapi pada kenyataannya, enumset juga memiliki kelemahan - itu tidak dapat membuat enumset yang tidak dapat diubah, tetapi kita dapat merangkum enumset dengan collections.unmodifibleset, tetapi kesederhanaan dan kinerja terpengaruh.
public void test () {enumset <yesty> styles = enumset.of (style.bold, style.itical); Set <tyle> unmodifiblestyle = collections.unmodifibleset (styles); unmodifiblestyle.add (style.underline);}Dengan cara ini, jika Anda menambahkan elemen ke unmodifibleset, Anda akan melaporkan java.lang.unsupportedoperationException
Meringkaskan
Di atas adalah semua penjelasan terperinci dari enumset alih -alih kode bitfield di java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!