เมื่อกำหนดประเภท enum คุณจะกำหนดคลาส แต่รายละเอียดจำนวนมากจะถูกเติมเต็มโดยคอมไพเลอร์สำหรับคุณดังนั้นในระดับหนึ่งบทบาทของคำหลัก enum ก็เหมือนกับคลาสหรืออินเทอร์เฟซ
เมื่อคุณกำหนดประเภท enum โดยใช้ "enum" ประเภทที่คุณกำหนดนั้นได้รับการสืบทอดมาจากคลาส java.lang.enum และสมาชิกของแต่ละ enum เป็นตัวอย่างของประเภท enum ที่คุณกำหนด พวกเขาทั้งหมดผิดนัดเป็นรอบชิงชนะเลิศดังนั้นคุณไม่สามารถเปลี่ยนแปลงได้พวกเขายังเป็นสมาชิกคงที่ดังนั้นคุณสามารถใช้พวกเขาโดยตรงผ่านชื่อประเภทและที่สำคัญที่สุดคือพวกเขาทั้งหมดเป็นสาธารณะ
ตัวอย่างเช่น:
opconstants.javapublic enum opconstants {turn_left, turn_right, shoot} ในตัวอย่างนี้ opconstants สืบทอดมาจาก java.lang.enum สมาชิก enum แต่ละคนเช่น turn_left, turn_right, ยิง พวกเขาทั้งหมดเป็นอินสแตนซ์วัตถุของ opconstants นั่นคืออินสแตนซ์วัตถุ มีวิธีการบางอย่างตามธรรมชาติข้างต้น ตัวอย่างเช่นวิธี ToString () ถูกเขียนทับซึ่งช่วยให้คุณได้รับคำอธิบายสตริงของค่า enum โดยตรง วิธี () วิธีการที่กำหนดโดยวัตถุ enum ช่วยให้คุณได้รับอินสแตนซ์ enum ทั้งหมดและส่งกลับกลับในอาร์เรย์ คุณใช้สองวิธีนี้เพื่อแสดงเนื้อหาของ opconstants:
showenum.javapublic คลาส showenum {public static void main (string [] args) {สำหรับ (opconstants ค่าคงที่: opconstants.values ()) {system.out.println (constant.toString ()); - โดยพื้นฐานแล้ว println () จะเรียก toString () โดยอัตโนมัติดังนั้นจึงเป็นเรื่องจริงที่จะไม่เขียน ToString () ผลการดำเนินการมีดังนี้:
turn_leftturn_rightshoot
คุณสามารถใช้วิธี "==" หรือ Equals () เพื่อเปรียบเทียบวัตถุ enum "" == "" จะเปรียบเทียบว่าวัตถุ enum ที่คุณให้นั้นเหมือนกัน (นั่นคือครอบครองตำแหน่งหน่วยความจำเดียวกัน) ในขณะที่ Equals () จะเปรียบเทียบเนื้อหาของวัตถุ enum สองชิ้นเป็นหลัก โดยค่าเริ่มต้นมันจะถูกเปรียบเทียบตามค่าสตริงของ enum
วิธีการ valueof () ช่วยให้คุณพยายามแปลงสตริงที่ระบุเป็นอินสแตนซ์ enum คุณสามารถใช้วิธีการเปรียบเทียบ () ซึ่งสามารถเปรียบเทียบลำดับของวัตถุ enum ทั้งสองเมื่อการแจงนับ นี่คือตัวอย่าง
showenum.javapublic คลาส showenum {public static void main (string [] args) {enumcompareto (opconstants.valueof (args [0])); } โมฆะคงที่สาธารณะ enumCompareto (ค่าคงที่ opConstants) {system.out.println (ค่าคงที่); สำหรับ (opconstants c: opconstants.values ()) {system.out.println (constant.compareto (c)); - ผลการดำเนินการ:
$ java showenum turn_right
turn_right10-1
ส่งกลับค่าบวกซึ่งบ่งชี้ว่าคำสั่งซื้อก่อนที่วัตถุ enum จะถูกเปรียบเทียบหลังจากระบุค่าลบและ 0 หมายความว่าตำแหน่งของค่า enum เปรียบเทียบร่วมกันสองค่าร่วมกันเหมือนกัน
สำหรับสมาชิกการแจงนับแต่ละคนเราสามารถใช้วิธีการลำดับ () เพื่อรับดัชนีตำแหน่งในลำดับการแจงนับและค่าเริ่มต้นเริ่มต้นด้วย 0 ตัวอย่างเช่น:
showenum.javapublic คลาส showenum {public static void main (string [] args) {สำหรับ (opconstants c: opconstants.values ()) {system.out.printf ("%d%s%n", c.ordinal (), c); - ผลการดำเนินการ:
0 turn_left1 turn_righ2 shoot
คำหลัก enum สามารถใช้เพื่อกำหนดคลาส enum และค่าคงที่ที่เกี่ยวข้องสามารถเขียนในชั้นเรียน ลองดูตัวอย่างด้านล่าง
รหัสต่อไปนี้:
คลาส TestClass {Private TestClass () {} // กำหนดตัวสร้างส่วนตัวและไม่สามารถสร้างอินสแตนซ์วัตถุจากภายนอก // ให้สองอินสแตนซ์ A และ B ทดสอบสาธารณะสุดท้ายทดสอบ A = New TestClass (); การทดสอบสุดท้ายคงที่สาธารณะ b = new TestClass ();}คุณสามารถใช้ประเภท enum แทน:
enum testClass01 {a, b;}การใช้งาน:
enum สามารถมีตัวสร้างฟิลด์และวิธีการ:
enum testClass02 {a ("a") // เมื่อสร้างวัตถุส่งผ่านในพารามิเตอร์ตัวสร้าง, b ("b"); ค่าสตริงส่วนตัว Private TestClass02 (ค่าสตริง) {this.value = value; } สตริงสาธารณะ getValue () {return this.value; -การแจกแจงยังสามารถมีวิธีการนามธรรม:
enum testClass03 {a () {// ใช้วิธีนามธรรมวิธีโมฆะสาธารณะประเภท () {system.out.println ("ยอดเยี่ยม"); }}, b () {public void type () {system.out.println ("ดี"); - Public Public Void Type (); // กำหนดวิธีนามธรรม}วิธีทดสอบ:
คลาสสาธารณะ test02 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {print (testclass02.a); // หยุดชั่วคราวในพารามิเตอร์ enum} การพิมพ์โมฆะคงที่สาธารณะ (testclass02 t) {system.out.println (t.getValue ()); } enum testClass02 {a ("a"), b ("b"); ค่าสตริงส่วนตัว Private TestClass02 (ค่าสตริง) {this.value = value; } สตริงสาธารณะ getValue () {return this.value; -ผลการทำงาน:
Aauthor: Start Sign: ตราบใดที่คุณยังคงพยายามมันไม่ใช่ความล้มเหลว