1. Enum trong Java là gì?

Trong Java, Enum cũng là một kiểu dữ liệu, nhưng kiểu dữ liệu này là một kiểu dữ liệu đặc biệt mà ở trong nó sẽ cho phép chứa các phần tử là các hằng số được định nghĩa sẵn. Vì là các hằng số nên các biến trong Enum thường được khai báo theo dạng in hoa, ví dụ như: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY… Một vài ví dụ cụ thể thường được sử dụng kèm với Enum phải kể đến như: các Enum ngày tháng, các Enum thứ trong tuần, các Enum màu sắc, các Enum mùa trong năm….

Cú pháp khai báo Enum trong Java như sau:

enum name_enum{
    ENUM1,
    ENUM2,
    ENUM3,
    ...
    ENUMN;
}

Trong đó:

  • enum name_enum là cú pháp khai báo enum trong Java với tên của nó là  name_enum
  • ENUM1, ENUM2, ENUM3, ENUMN là các giá trị hằng số bên trong Enum

 

2. Khai báo Enum trong Java

Việc khai báo một enum có thể được thực hiện bên ngoài một Lớp hoặc bên trong một Lớp nhưng không thể khai báo enum bên trong một phương thức. Chúng ta có thể hiểu kiểu dữ liệu Enum cũng tương tự như một lớp mới khi được khai báo trong Java.

2.1 Khai báo Enum trong một Lớp Java

Ví dụ dưới đây, khai báo một Enum có tên là Color, Enum này bao gồm các hằng số: RED, GREEN, BLUE và được khai báo trong lớp Main. Sau đó gọi Enum này vào hàm main để thực thi chương trình hiển thị ra giá trị bên trong Enum Color như sau:

public class Main {
    //Khai bao enum trong lop main
    enum Color {
        RED,
        GREEN,
        BLUE;
    }
 
    public static void main(String[] args)
    {
        //Khoi tao Enum
        Color colorRed = Color.RED;
        System.out.println(colorRed);
    }
}

Kết quả:

RED

2.2 Khai báo Enum bên ngoài Lớp Java

Ví dụ dưới đây, khai báo một Enum có tên là Day, Enum này bao gồm các hằng số: SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; và được khai báo bên ngoài lớp Main. Sau đó gọi Enum này vào hàm main để thực thi chương trình hiển thị ra giá trị bên trong Enum Day như sau:

//Khai bao enum ben ngoai lop main
enum Day {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY;
}
 
public class Main {
    public static void main(String[] args)
    {
        //Khoi tao Enum
        Day sunday = Day.SUNDAY;
        System.out.println(sunday);
    }
}

Kết quả:

SUNDAY

3. Duyệt Enum trong Java

Cách tốt nhất để duyệt qua các phần tử có trong Enum đó là, chúng ta cần chuyển Enum cần duyệt về kiểu dữ liệu mảng trong Java. Để thực hiện việc chuyển Enum sang mảng, trong Java đã cung cấp sẵn cho chúng ta phương thức values() – phương thức này khi được gọi từ một Enum nó sẽ chuyển đổi kiểu dữ liệu Enum về mảng. Và khi đó ta hoàn toàn có thể duyệt các phần tử có trong mảng này!

//Khai bao enum ben ngoai Lop
enum Color {
    RED,
    GREEN,
    BLUE;
}
 
public class Main {
    public static void main(String[] args)
    {
        //Tao mang co kieu du lieu Color cac phan tu duoc chuyen tu Enum sang
        Color arr[] = Color.values();
 
        //Duyet cac phan tu trong mang
        for (Color col : arr) {
            //Hien thi cac gia tri co trong mang
            System.out.println(col);
        }
 
        System.out.println(Color.valueOf("RED"));
    }
}

Kết quả:

RED
GREEN
BLUE
RED

4. Ví dụ Enum trong Java

Kiểu dữ liệu Enum trong Java được định nghĩa ra và sử dụng với nhiều mục đích khác nhau trong chương trình Java, tuy nhiên Enum thường được định nghĩa ra để làm điều kiện kiểm tra trong các mệnh đề. Các điều kiện này thường là việc so sánh các phần tử có trong Enum với một dữ liệu cụ thể do người dùng nhập vào và chúng thường được thực hiện so sánh trong các câu lệnh if else hoặc switch case

Một ví dụ dưới đây, sử dụng Enum trong Java để kiểm tra xem màu người dùng nhập vào từ bàn phím là màu gì? Bằng cách khai báo Enum gồm 3 màu, RED, GREEN, BLUE và kiểm tra điều kiện trong câu lệnh rẽ nhánh switch case như sau:

import java.util.Scanner;
 
//Khai bao enum ben ngoai Lop
enum Color {
    RED,
    GREEN,
    BLUE;
}
 
public class Main {
    public static void main(String[] args)
    {
        //Nhap mau can kiem tra
        Scanner input = new Scanner(System.in);  
        System.out.println("Nhap mau(RED, GREEN, BLUE): ");
        String color = input.nextLine();  
        
        try{
            //Su dung switch case de kiem tra mau
            switch (Color.valueOf(color)) {
                case RED:
                    System.out.println("Mau Red");
                    break;
                case GREEN:
                    System.out.println("Mau Green");
                    break;
                case BLUE:
                    System.out.println("Mau Blue");
                    break;
            }
        }catch(Exception ex){
            System.out.println("Vui long nhap mau red, green hoac blue!");
        }
        
    }
}

Kết quả:

Nhap mau(RED, GREEN, BLUE): 
RED
Mau Red