คู่มือสำหรับผู้เริ่มต้นใช้งาน Java eNum – ทำไมและเพื่ออะไร ฉันควรใช้ Enum? ตัวอย่าง Java Enum
เผยแพร่แล้ว: 2019-04-23 Enums คือรายการของ constants
เช่นตัวแปรที่ไม่สามารถเปลี่ยนแปลงได้ คุณเคยได้ยิน Final keyword
หรือไม่? ประมาณนั้นแหละ.
เมื่อคุณต้องการรายการค่าที่กำหนดไว้ล่วงหน้าซึ่งแสดงถึงข้อมูลตัวเลขหรือข้อความบางประเภท คุณควรใช้ enum ตัวอย่างเช่น ในเกมหมากรุก คุณสามารถแสดงชิ้นส่วนประเภทต่างๆ เป็น enum:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
คุณควรใช้ enums เสมอเมื่อตัวแปร (โดยเฉพาะพารามิเตอร์ method) สามารถดึงค่าที่เป็นไปได้ชุดเล็ก ๆ ได้เพียงหนึ่งชุดเท่านั้น ตัวอย่างเช่น ค่าคงที่ประเภท (สถานะสัญญา: "ถาวร", "ชั่วคราว", "ฝึกงาน") หรือแฟล็ก ("ดำเนินการทันที", "เลื่อนการดำเนินการ")
หากคุณใช้ enums แทนจำนวนเต็ม (หรือรหัสสตริง) คุณจะเพิ่มการตรวจสอบเวลาคอมไพล์และหลีกเลี่ยงข้อผิดพลาดจากการส่งผ่านค่าคงที่ที่ไม่ถูกต้อง และคุณบันทึกว่าค่าใดถูกต้องตามกฎหมายที่จะใช้
ตัวอย่าง จาวา :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
เอาท์พุท:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
บางจุดที่สำคัญมากใน Java Enum:
จุด-1
enum ทั้งหมด ขยายโดยปริยาย java.lang.Enum
เนื่องจาก Java ไม่รองรับการสืบทอดหลายรายการ enum จึงไม่สามารถขยายสิ่งอื่นใดได้
จุด-2
Enum in Java are type-safe:
Enum มีเนมสเปซของตัวเอง หมายความว่า enum ของคุณจะมีประเภทเช่น “บริษัท” ในตัวอย่างด้านล่าง และคุณไม่สามารถกำหนดค่าอื่นใดนอกจากที่ระบุไว้ในค่าคงที่ของ Enum
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

จุด-3
คุณสามารถระบุค่าของค่าคงที่ enum ได้ในเวลาที่สร้าง MyEnum.values()
คืนค่าอาร์เรย์ของค่าของ MyEnum
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
เอาท์พุท:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
จุด-4
ค่าคงที่ Enum เป็นค่าคงที่โดยปริยายและเป็นค่าสุดท้าย และไม่สามารถเปลี่ยนแปลงได้เมื่อสร้างแล้ว
พอยต์-5
Enum สามารถเปรียบเทียบได้อย่างปลอดภัยโดยใช้:
- คำชี้แจงกรณีสวิตช์
- == โอเปอเรเตอร์
- .equals() method โปรดปฏิบัติตามบทช่วยสอนฉบับสมบูรณ์
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
จุด-6
คุณไม่สามารถสร้างอินสแตนซ์ของ enums โดยใช้ตัวดำเนินการใหม่ใน Java เนื่องจากตัวสร้างของ Enum ใน Java สามารถเป็นแบบส่วนตัวได้เท่านั้น และค่าคงที่ Enums สามารถสร้างได้ภายใน Enums เท่านั้น
จุด-7
อินสแตนซ์ของ Enum ใน Java ถูกสร้างขึ้นเมื่อมีการเรียกหรืออ้างอิงค่าคงที่ Enum ครั้งแรกในโค้ด
จุด-8
enum ระบุรายการของค่าคงที่ที่กำหนดให้กับประเภท
จุด-9
สามารถประกาศ enum ภายนอกหรือภายในคลาสได้ แต่ไม่ใช่ในเมธอด
จุด-10
enum ที่ประกาศนอกคลาสจะต้องไม่ถูกทำเครื่องหมาย static, final , abstract, protected , หรือ private
จุด-11
Enum สามารถมีตัวสร้าง เมธอด ตัวแปร และเนื้อหาคลาสคงที่ได้
จุด-12
ค่าคงที่ enum สามารถส่งอาร์กิวเมนต์ไปยังตัวสร้าง enum โดยใช้ไวยากรณ์ BIG(8) โดยที่ int ตามตัวอักษร 8 ถูกส่งไปยังตัวสร้าง enum
จุด-13
ตัวสร้าง enum สามารถมีอาร์กิวเมนต์ และสามารถโอเวอร์โหลดได้
จุด-14
ตัวสร้าง enum ไม่สามารถเรียกใช้โดยตรงในโค้ด พวกมันจะถูกเรียกโดยอัตโนมัติเสมอเมื่อ enum ถูกเตรียมใช้งาน
จุด-15
เครื่องหมายอัฒภาคที่ส่วนท้ายของการประกาศ enum เป็นทางเลือก
สิ่งเหล่านี้ถูกกฎหมาย:
- enum Foo { หนึ่ง สอง สาม}
- enum Foo { หนึ่ง สอง สาม};
ตัวอย่าง Java eNUM อย่างง่าย:
Enums คือรายการของค่าคงที่ เมื่อคุณต้องการรายการค่าที่กำหนดไว้ล่วงหน้าซึ่งแสดงถึงข้อมูลตัวเลขหรือข้อความบางประเภท คุณควรใช้ enum
คุณควรใช้ enums เสมอเมื่อตัวแปร (โดยเฉพาะพารามิเตอร์ method) สามารถดึงค่าที่เป็นไปได้ชุดเล็ก ๆ ได้เพียงหนึ่งชุดเท่านั้น ตัวอย่างเช่น ค่าคงที่ประเภท (สถานะสัญญา: "ถาวร", "ชั่วคราว", "ฝึกงาน") หรือแฟล็ก ("ดำเนินการทันที", "เลื่อนการดำเนินการ")
หากคุณใช้ enums แทนจำนวนเต็ม (หรือรหัสสตริง) คุณจะเพิ่มการตรวจสอบเวลาคอมไพล์และหลีกเลี่ยงข้อผิดพลาดจากการส่งผ่านค่าคงที่ที่ไม่ถูกต้อง และคุณบันทึกว่าค่าใดถูกต้องตามกฎหมายที่จะใช้
ระหว่าง การใช้ enums มากเกินไปอาจหมายความว่าวิธีการของคุณทำมากเกินไป (มักจะดีกว่าที่จะมีหลายวิธีแยกกัน แทนที่จะเป็นวิธีเดียวที่ใช้แฟล็กหลายอย่างซึ่งปรับเปลี่ยนสิ่งที่ทำ) แต่ถ้าคุณต้องใช้แฟล็กหรือรหัสประเภท enums เป็นวิธีที่จะไป
นี่เป็นตัวอย่าง Java eNum ที่ง่ายมาก
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
เอาท์พุท:
1 |
Get enum value for Comapny 'eBay' : Value : E |