บทความนี้ส่วนใหญ่ศึกษาเนื้อหาที่เกี่ยวข้องของ enumset แทนโดเมนบิตใน Java ตามรายละเอียดด้านล่าง
การอ่านหมายเหตุ "Java Chinese เวอร์ชัน 2 ที่มีประสิทธิภาพ"
สัญกรณ์โดเมนบิตช่วยให้การดำเนินการบิตดำเนินการได้อย่างมีประสิทธิภาพเช่นสหภาพและสี่แยก แต่โดเมนบิตมีข้อเสียทั้งหมดของการให้ความกระจ่างเกี่ยวกับการแจงนับ INT และอื่น ๆ อีกมากมาย เมื่อ bitfield ถูกพิมพ์ในรูปแบบดิจิตอลมันยากกว่ามากที่จะแปลค่าคงที่การแจงนับ int ง่าย ๆ แม้จะไม่มีวิธีง่ายๆในการสำรวจองค์ประกอบทั้งหมดที่แสดงโดย Bitfield
// บิตฟิลด์ค่าคงที่การแจงนับ - การทดสอบคลาสที่ล้าสมัย {สาธารณะคงที่สุดท้ายไบต์ style_bold = 1 << 0; // 1 สาธารณะคงที่สาธารณะ byte style_italic = 1 << 1; // 2 สาธารณะคงที่สาธารณะ byte style_underline = 1 << 2; // 4 สาธารณะคงที่สาธารณะ byte style_strikethrough = 1 << 3; // 6 // พารามิเตอร์เป็น bitwise หรือเป็นศูนย์หรือมากกว่า style_ ค่าคงที่โมฆะสาธารณะใช้ applestyles (รูปแบบ int) {... }}แพ็คเกจ java.util ให้คลาส Enumset เพื่อแสดงคอลเลกชันหลายค่าของหลายค่าที่แยกจากประเภท enum เดียว คลาสนี้ใช้อินเทอร์เฟซที่ตั้งไว้ให้ฟังก์ชั่นที่หลากหลายประเภทความปลอดภัยและความสามารถในการทำงานร่วมกันที่สามารถรับได้จากการใช้งานชุดอื่น ๆ อย่างไรก็ตามในการใช้งานเฉพาะภายในเนื้อหา enumset แต่ละรายการจะแสดงเป็นเวกเตอร์บิต หากประเภท enum พื้นฐานมี 64 หรือน้อยกว่าองค์ประกอบ - ส่วนใหญ่เป็น enumset ทั้งหมดแสดงด้วยความยาวเดียวดังนั้นประสิทธิภาพของมันจึงดีกว่าประสิทธิภาพของโดเมนบน การประมวลผลแบบแบตช์เช่น RemoveAll และ Retainall จะถูกนำมาใช้โดยใช้อัลกอริทึมบิต เช่นเดียวกับการแทนที่โดเมนบิตด้วยตนเอง แต่คุณสามารถหลีกเลี่ยงข้อผิดพลาดที่มีแนวโน้มที่จะดำเนินการด้วยตนเองและรหัสที่สง่างามน้อยลงเพราะ Enumset ทำหน้าที่นี้ยากสำหรับคุณ -
// enumset - การแทนที่ที่ทันสมัยสำหรับบิต fieldspublic class text {สไตล์ enum สาธารณะ {bold, italic, ขีดเส้นใต้, strikethrough}; // ชุดใด ๆ ที่สามารถส่งผ่านได้ แต่ enumset เป็นโมฆะสาธารณะที่ดีที่สุดอย่างชัดเจน Applystyles (ชุด <style> สไตล์) {system.out.println (สไตล์); } การทดสอบโมฆะสาธารณะ () {applestyles (enumset.of (style.bold, style.italic)); - ดำเนิน test() และเอาต์พุต [BOLD, ITALIC]
คลาส enumset รวมความเรียบง่ายและประสิทธิภาพการทำงานของโดเมนบิตและข้อดีทั้งหมดของประเภท enum ดังนั้นจึงไม่มีเหตุผลที่จะใช้สัญกรณ์โดเมนบิตอีกครั้ง เว้นแต่จะเป็นฟิลด์ที่ถือเป็นโปรโตคอลการสื่อสาร
แต่ในความเป็นจริง Enumset ยังมีข้อเสีย - มันไม่สามารถสร้าง enumset ที่ไม่เปลี่ยนรูปได้ แต่เราสามารถห่อหุ้ม enumset ด้วยคอลเลกชัน unmodifiableSet แต่ทั้งความเรียบง่ายและประสิทธิภาพได้รับผลกระทบ
การทดสอบโมฆะสาธารณะ () {enumset <style> styles = enumset.of (style.bold, style.italic); ตั้งค่า <style> unmodifiablestyle = collections.unmodifiableSet (สไตล์); unmodifiablestyle.add (style.underline);}ด้วยวิธีนี้หากคุณเพิ่มองค์ประกอบใน unmodifiableset คุณจะรายงาน java.lang.unsupportedoperationexception
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของ Enumset แทนรหัส Bitfield ใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!