Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เชี่ยวชาญ Java Enums: คู่มือปฏิบัติจริง

Java enum เป็นชนิดข้อมูลที่จัดเก็บรายการค่าคงที่ (constants) คุณสามารถสร้าง enum object โดยใช้คีย์เวิร์ด enum Enum constants จะปรากฏเป็นรายการคั่นด้วยคอมม่าภายในคู่วงเล็บปีกกา

Enum ย่อมาจาก enumeration คือชนิดข้อมูลที่มีชุดค่าที่เป็นไปได้คงที่

Enums มีประโยชน์หากคุณทำงานกับค่าที่ควรมีเฉพาะค่าเฉพาะที่อยู่ในรายการค่า ตัวอย่างเช่น enum จะถูกใช้หากคุณต้องการจัดเก็บรายการขนาดกาแฟที่ขายในร้าน

บทช่วยสอนนี้จะเดินทางผ่านพื้นฐาน enums ใน Java เราจะอ้างอิงตัวอย่างเล็กน้อยของ enum class ในโปรแกรม Java เพื่อช่วยคุณเริ่มต้น

ไวยากรณ์ Java Enum

Java enum แสดงถึงรายการค่าคงที่ ตัวแปรที่กำหนดจาก enum สามารถมีค่าได้เฉพาะค่าที่ปรากฏใน enum เท่านั้น Enums ช่วยให้นักพัฒนาจัดเก็บข้อมูลที่พวกเขารู้ว่าจะไม่เปลี่ยนแปลง

สมมติคุณตัดสินใจว่าตัวแปร Java ที่จัดเก็บเกรดเงินเดือนพนักงาน สามารถมีได้เพียง 5 ค่าเท่านั้น หรือ คุณตัดสินใจว่าตัวแปรที่จัดเก็บสัญญาพนักงาน สามารถจัดเก็บได้แค่ Part-time, Full-time, หรือ Zero-hours ในกรณีเหล่านี้ คุณจะต้องการใช้ enum เพื่อจัดเก็บข้อมูล

Enums ประกาศโดยใช้ type "enum" นี่คือไวยากรณ์ของคีย์เวิร์ด "enum":

enum name { VALUE1, VALUE2, VALUE3 } 

มาแยกไวยากรณ์นี้:

  • enum บอกโปรแกรมเราว่าเราต้องการประกาศ enumeration
  • name คือชื่อของ enum ของเรา
  • VALUE1, VALUE2, VALUE3 คือชุดค่าคงที่ที่ enum ของเราจัดเก็บ ค่าเหล่านี้มักเขียนเป็นตัวพิมพ์ใหญ่

ทำไมต้องใช้ Enums ใน Java?

การใช้ enums ช่วยให้คุณแสดงอัลกอริทึมในลักษณะที่อ่านง่ายขึ้น ทั้งสำหรับคุณเองและคอมพิวเตอร์

การเขียน enum บอกคอมพิวเตอร์ว่าตัวแปรสามารถมีได้แค่จำนวนค่าเฉพาะ มันยังบอกคุณ (นักเขียนโค้ด) ว่าเป็นเช่นนั้น ซึ่งจะทำให้เข้าใจโค้ดของคุณง่ายขึ้น หากคุณเห็นตัวแปรที่ใช้ enum คุณจะรู้ว่าตัวแปรนั้นสามารถมีได้แค่หนึ่งในจำนวนค่าที่จำกัด

เพิ่มเติม enums ช่วยให้คุณใช้ constants ได้อย่างมีประสิทธิภาพมากขึ้น จริงๆ แล้ว enum ถูกนำมาแทนที่ int constants ใน Java ซึ่งครอบคลุมหลายบรรทัดและอ่านยาก นี่คือตัวอย่างเก่า int constant ใน Java:

โค้ดของเราใช้ 5 บรรทัดในการประกาศ constants เหล่านี้ แต่ด้วยการใช้ enum เราสามารถลดโค้ดเหลือ 3 บรรทัด ในตัวอย่างด้านล่าง เราประกาศรายการ enum constants:

class IntConstant { public final static int ECONOMY = 1; public final static int BUSINESS = 2; public final static int FIRST_CLASS = 3; } 

โค้ดของเราใช้ 5 บรรทัดในการประกาศ constants เหล่านี้ แต่ด้วยการใช้ enum เราสามารถลดโค้ดเหลือ 3 บรรทัด ในตัวอย่างด้านล่าง เราประกาศรายการ enum constants:

class AirplaneClasses { ECONOMY, BUSINESS, FIRST_CLASS } 

โค้ดนี้เรียบง่ายและอ่านง่ายกว่า

การประกาศ Java Enum

เรากำลังสร้างแอปที่พนักงานเสิร์ฟสามารถใช้ส่งออเดอร์กาแฟไปยังบาริสต้าที่ร้านกาแฟ

เมื่อบาริสต้าป้อนค่าสำหรับขนาดเครื่องดื่ม เราต้องการให้มีเพียง 3 ตัวเลือกเท่านั้น ตัวเลือกเหล่านี้คือ: SMALL, REGULAR, และ LARGE เราสามารถใช้ enum จำกัดขนาดเครื่องดื่มที่เป็นไปได้ให้เป็นตัวเลือกเหล่านั้น:

enum Sizes { SMALL, REGULAR, LARGE } 

ในตัวอย่างนี้ เราได้ประกาศ enum ชื่อ Sizes ซึ่งมี 3 ค่าที่เป็นไปได้ ตอนนี้เราประกาศ enum แล้ว เราสามารถอ้างอิงค่าของมันในโค้ดได้

ตัวอย่าง Java Enum

เราเขียนโปรแกรมที่พิมพ์ขนาดกาแฟที่ลูกค้าสั่งไปที่คอนโซล ค่านี้จะถูกอ่านโดยบาริสต้าที่เตรียมเครื่องดื่มให้ลูกค้า

เราสามารถใช้โค้ดต่อไปนี้พิมพ์ขนาดกาแฟที่ลูกค้าสั่งไปที่คอนโซล:

enum Sizes { SMALL, REGULAR, LARGE } class PrintSize { Sizes coffeeSize; public PrintSize(Sizes coffeeSize) { this.coffeeSize = coffeeSize; } public void placeOrder() { switch(coffeeSize) { case SMALL: System.out.println("This coffee should be small."); break; case REGULAR: System.out.println("This coffee should be REGULAR."); break; case LARGE: System.out.println("This coffee should be large."); break; } } } class Main { public static void main(String[] args) { PrintSize order173 = new PrintSize(Sizes.SMALL); order173.placeOrder(); } } 

โค้ดของเราคืนค่า:

This coffee should be small.

ก่อนอื่น เราประกาศ enum ชื่อ Sizes Enum นี้สามารถมี 3 ค่า: SMALL, REGULAR, หรือ LARGE ต่อไป เราประกาศคลาสชื่อ PrintSize คลาสนี้รับขนาดเครื่องดื่มของลูกค้าและพิมพ์ขนาดเครื่องดื่มไปที่คอนโซล

ในโปรแกรมหลัก เราประกาศอ็อบเจกต์ชื่อ order173 ซึ่งใช้คลาส PrintSize เราส่ง Java parameter Sizes.SMALL ผ่านโค้ดของเรา นี่บอกโปรแกรมให้กำหนดค่า SMALL ให้ตัวแปร coffeeSize ในคลาส PrintSize

จากนั้นเราใช้ order173.placeOrder() เพื่อ execute โค้ดภายใน statement switch case ในคลาส PrintSize นี่ประเมินค่าของตัวแปร "coffeeSize" ต่อ 3 กรณี ข้อความจะถูกพิมพ์ไปที่คอนโซลขึ้นอยู่กับขนาดกาแฟที่ลูกค้าสั่ง

เราระบุว่าลูกค้าสั่งกาแฟขนาดเล็ก โค้ดของเราพิมพ์ "This coffee should be small." ไปที่คอนโซล

หากคุณมองหาเรียนรู้เพิ่มเติมเกี่ยวกับ Java switch case statements คุณสามารถอ่านได้ในบทช่วยสอนของเราเกี่ยวกับ Java switch statement

เมธอดของ Java Enum

คลาส Java enum รวมเมธอดที่กำหนดไว้ล่วงหน้าหลายอย่าง ที่ใช้สำหรับดึงและจัดการค่าที่ใช้ enum class ด้านล่างเราแยก 5 เมธอด enum ที่ใช้บ่อยที่สุด

compareTo()

compareTo() เปรียบเทียบ constants ใน enum แบบ lexicographically และคืนค่าความต่างระหว่าง ordinal values ของพวกมัน นี่คือตัวอย่าง compareTo() ที่ใช้กับค่า enum จากตัวอย่างข้างต้น:

int difference = Sizes.SMALL.compareTo(Sizes.LARGE); System.out.println(difference); 

โค้ดของเราคืนค่าความต่างระหว่าง strings SMALL และ LARGE ตาม ordinal value ในกรณีนี้ โค้ดคืนค่า:

-2

toString()

toString() แปลงชื่อของ enum เป็น string นี่คือตัวอย่าง toString() ที่ใช้แปลงค่า enum LARGE เป็น string:

String large_string = LARGE.toString(); System.out.println(large_string); 

โค้ดของเราคืนค่า:

“LARGE”

name()

เมธอด name() คืนค่าชื่อที่ใช้กำหนด constant ใน enum class นี่คือตัวอย่างเมธอด name() ที่ใช้คืนค่าชื่อที่กำหนดของขนาดกาแฟ REGULAR:

String regular_name = name(REGULAR); System.out.println(regular_name); 

โค้ดของเราคืนค่า:

“REGULAR”

values()

เมธอด values() คืนค่า Java array ที่จัดเก็บ constants ทั้งหมดใน enum นี่คือตัวอย่างเมธอด values() ในการทำงาน:

Sizes[] sizeList = Sizes.values();

valueOf()

valueOf() รับ string และคืนค่า enum constant ที่มีชื่อเดียวกัน ดังนั้น หากเราต้องการดึง enum constant ที่มีชื่อ REGULAR, เราสามารถทำได้ด้วยโค้ดนี้:

String regular_constant = Sizes.valueOf("REGULAR"); System.out.println(regular_constant); 

โค้ดของเราคืนค่า:

REGULAR

สรุป

Enum ย่อมาจาก enumeration คือชนิดข้อมูล Java ที่มีชุดค่าที่คงที่

Enums มีประโยชน์หากคุณทำงานกับตัวแปรที่ควรสามารถจัดเก็บได้เพียงหนึ่งค่าจากช่วงค่าที่เลือกไว้

หลังจากฝึกฝนสิ่งที่คุณอ่านในบทช่วยสอนนี้ คุณจะกลายเป็นผู้เชี่ยวชาญในการใช้ enums ใน Java หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Java อ่านคู่มือสมบูรณ์ของเราเกี่ยวกับ How to Code in Java