Java enum & enum Class (Có ví dụ)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về enum trong Java. Chúng ta sẽ học cách tạo và sử dụng enum và các lớp enum với sự trợ giúp của các ví dụ.

Trong Java, enum (viết tắt của enumeration) là một kiểu có một tập hợp các giá trị không đổi cố định. Chúng tôi sử dụng enumtừ khóa để khai báo enums. Ví dụ,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Ở đây, chúng tôi đã tạo một enum có tên là Size. Nó chứa các giá trị cố định SMALL, MEDIUM, LARGE và EXTRALARGE.

Những giá trị bên trong dấu ngoặc nhọn này được gọi là hằng số enum (giá trị).

Lưu ý: Hằng số enum thường được biểu diễn bằng chữ hoa.

Ví dụ 1: Java Enum

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )

Đầu ra

 TRUNG BÌNH NHỎ

Như chúng ta có thể thấy từ ví dụ trên, chúng ta sử dụng tên enum để truy cập các giá trị hằng.

Ngoài ra, chúng ta có thể tạo các biến kiểu enum. Ví dụ,

 Size pizzaSize;

Ở đây, pizzaSize là một biến của loại Size. Nó chỉ có thể được gán với 4 giá trị.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Ví dụ 2: Java Enum với câu lệnh switch

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )

Đầu ra

 Tôi đã gọi một chiếc bánh pizza cỡ vừa.

Trong chương trình trên, chúng ta đã tạo một kiểu enum Size. Sau đó, chúng tôi đã khai báo một biến pizzaSize của loại Size.

Ở đây, biến pizzaSize chỉ có thể được gán với 4 giá trị (NHỎ, TRUNG BÌNH, LỚN, CỰC KỲ).

Lưu ý tuyên bố,

 Test t1 = new Test(Size.MEDIUM);

Nó sẽ gọi hàm Test()tạo bên trong lớp Test. Bây giờ, biến pizzaSize được gán với hằng số MEDIUM.

Dựa trên giá trị, một trong các trường hợp của câu lệnh switch case được thực thi.

Enum Class trong Java

Trong Java, kiểu enum được coi là một kiểu lớp đặc biệt. Nó được giới thiệu cùng với việc phát hành Java 5.

Một lớp enum có thể bao gồm các phương thức và trường giống như các lớp thông thường.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Khi chúng ta tạo một lớp enum, trình biên dịch sẽ tạo các thể hiện (đối tượng) của mỗi hằng enum. Ngoài ra, tất cả hằng số enum luôn public static finalđược mặc định.

Ví dụ 3: Lớp Java Enum

 enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )

Đầu ra

 Kích thước của bánh pizza nhỏ

Trong ví dụ trên, chúng ta đã tạo một Kích thước lớp enum. Nó có bốn hằng số SMALL, MEDIUM, LARGE và EXTRALARGE.

Vì Size là một lớp enum, trình biên dịch tự động tạo các thể hiện cho mỗi hằng số enum.

Ở đây bên trong main()phương thức, chúng ta đã sử dụng thể hiện SMALL để gọi getSize()phương thức.

Lưu ý : Giống như các lớp thông thường, một lớp enum cũng có thể bao gồm các hàm tạo. Để tìm hiểu thêm về nó, hãy truy cập hàm tạo Java enum.

Các phương thức của Java Enum Class

Có một số phương thức được xác định trước trong các lớp enum có sẵn để sử dụng.

1. Java Enum thứ tự ()

Các ordinal()phương thức trả về vị trí của một hằng số enum. Ví dụ,

 ordinal(SMALL) // returns 0

2. Enum so sánhTo ()

Các compareTo()phương pháp so sánh hằng enum dựa trên giá trị thứ tự của họ. Ví dụ,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

Các toString()phương pháp trả về chuỗi đại diện của hằng enum. Ví dụ,

 SMALL.toString() // returns "SMALL"

4. Tên enum ()

Các name()phương thức trả về tên xác định một hằng số enum ở dạng chuỗi. Giá trị trả về từ name()phương thức là final. Ví dụ,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

 class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Ở đây, nó được đảm bảo rằng biến sẽ giữ một trong bốn giá trị. Bây giờ, Nếu chúng ta cố gắng chuyển các giá trị khác với bốn giá trị đó, trình biên dịch sẽ tạo ra lỗi.

thú vị bài viết...