คำนำ
ในการเขียนโปรแกรมประจำวันของเรามักจะมี "ชุดข้อมูล" ซึ่งค่ามีความเสถียรในโปรแกรมและองค์ประกอบใน "ชุดข้อมูล" มี จำกัด ตัวอย่างเช่นองค์ประกอบข้อมูลเจ็ดรายการตั้งแต่วันจันทร์ถึงวันอาทิตย์เป็น "ชุดข้อมูล" หนึ่งสัปดาห์และองค์ประกอบข้อมูลสี่รายการจากฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงและฤดูหนาวเป็น "ชุดข้อมูล" ของสี่ฤดูกาล จะใช้ "ชุดข้อมูล" เหล่านี้ได้ดีขึ้นใน Java ได้ดีขึ้น? ดังนั้นการแจงนับจึงมีประโยชน์
การแจงนับเป็นประเภทจริงคล้ายกับ int และ char ซึ่งหมายความว่ามัน จำกัด อินพุตเมื่อกำหนดตัวแปร คุณสามารถกำหนดค่าที่ระบุใน enum เท่านั้น
การใช้งาน enum
JDK5 ให้การใช้งานประเภท Java enum ซึ่งเป็นน้ำตาลวากยสัมพันธ์มากกว่ารูปแบบใหม่
ฤดู enum สาธารณะ {ฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงฤดูหนาว}มาดูกันว่ารหัสนี้ถูกนำไปใช้อย่างไรผ่านเครื่องมือการสลายตัว รหัสที่ถอดรหัสมีดังนี้:
ฤดูกาลสุดท้ายของชั้นเรียนสาธารณะขยาย enum {ฤดูกาลสาธารณะคงที่ [] ค่า () {return (season []) $ value.clone (); } ค่าคงที่ของฤดูกาลสาธารณะ (String s) {return (season) enum.valueof (Season, S); } ฤดูกาลส่วนตัว (สตริง s, int i) {super (s, i); } ฤดูใบไม้ผลิสุดท้ายของฤดูใบไม้ผลิคงที่; ฤดูร้อนสุดท้ายในฤดูร้อน ฤดูใบไม้ร่วงสุดท้ายในฤดูใบไม้ร่วง ฤดูหนาวครั้งสุดท้ายของฤดูหนาวครั้งสุดท้าย ซีซั่นสุดท้ายคงที่ส่วนตัว $ ค่า []; คงที่ {ฤดูใบไม้ผลิ = ฤดูกาลใหม่ ("ฤดูใบไม้ผลิ", 0); ฤดูร้อน = ฤดูกาลใหม่ ("ฤดูร้อน", 1); ฤดูใบไม้ร่วง = ฤดูกาลใหม่ ("ฤดูใบไม้ร่วง", 2); ฤดูหนาว = ฤดูกาลใหม่ ("ฤดูหนาว", 3); $ values = (ฤดูกาลใหม่ [] {ฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงฤดูหนาว}); - โดยการถอดรหัสรหัสคุณสามารถค้นหา:
1. Season เป็นคลาสธรรมดาที่สืบทอดมาจาก Enum และได้รับการแก้ไขผ่านคำหลัก final เพื่อหลีกเลี่ยงการสืบทอด
2. SPRING SUMMER AUTUMN และ WINTER ใน enum เป็นอินสแตนซ์คงที่ของชั้นเรียน Season และเริ่มต้นในวิธีการสร้างคลาส <clinit>
3. วิธี values() ส่งคืนสำเนาของตัวแปรส่วนตัว $VALUES[] $VALUES[] ซึ่งเริ่มต้นในวิธี <clinit>
วิธีใช้ enum
1. โหมดซิงเกิลตัน
เรารู้อยู่แล้วว่าตัวสร้างคลาส <clinit> สามารถดำเนินการได้เพียงหนึ่งเธรดในระหว่างขั้นตอนการเริ่มต้นของการโหลดคลาสดังนั้นแต่ละอินสแตนซ์ของการแจงนับมีและเพียงหนึ่งสำเนาในสำเนา Java คุณสมบัตินี้ทำให้ง่ายต่อการแจกแจงในการใช้รูปแบบ Singleton นี่คือวิธีที่ Josh Bloch ผู้เขียน Java ที่มีประสิทธิภาพสนับสนุนการใช้รูปแบบการใช้งานแบบซิงเกิล
Public Enum Singleton {อินสแตนซ์;} 2. ใช้ในสวิตช์
3. ฟิลด์และวิธีการที่กำหนดเอง
นอกเหนือจากฟิลด์เริ่มต้นและวิธีการใน enums คุณสามารถปรับแต่งสำหรับตรรกะทางธุรกิจ
public enum enumtest {plus (" +") {@Override public int bind (int arg1, int arg2) {return arg1 + arg2; }}, sub (" -") {@Override สาธารณะ int bind (int arg1, int arg2) {return arg1 - arg2; - การดำเนินการสตริงสุดท้าย; enumTest (การดำเนินการสตริง) {this.operation = การดำเนินการ; } บทคัดย่อ int bind (int arg1, int arg2);}4. ใช้อินเทอร์เฟซ
การดำเนินการอินเตอร์เฟส {การดำเนินการ int (int arg1, int arg2);} public enum enumtest ดำเนินการดำเนินการ {plus (" +") {@Override การดำเนินการสาธารณะ int (int arg1, int arg2) {return arg1 + arg2; }}, sub (" -") {@Override การดำเนินการสาธารณะสาธารณะ (int arg1, int arg2) {return arg1 - arg2; - การดำเนินการสตริงสุดท้าย; enumTest (การดำเนินการสตริง) {this.operation = การดำเนินการ; - ในการใช้งานจริง "+" และ "-" สามารถใช้เป็นคีย์บวกและย่อยเป็น value และบันทึกไว้ล่วงหน้าใน HashMap ใน hashMap วิธีการใช้งานเฉพาะมีดังนี้:
การดำเนินการ = hashmap.get ("+"); int result = erperation.bind (1, 2);สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับประเภท enum ใน Java ฉันหวังว่าผ่านการแนะนำบทความนี้เกี่ยวกับ enums ใน Java มันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความเพื่อสื่อสาร