Enum trong java – VietTuts

Enum trong java là một kiểu dữ liệu đặc biệt của Java được sử dụng để định nghĩa các tập hợp các hằng số. Cụ thể hơn, Java enum là một kiểu đặc biệt của lớp trong java. Một enum có thể chứa các trường, phương thức và Constructor.

Nó có thể được sử dụng để định nghĩa các ngày trong tuần (SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY), các mùa trong năm (SPRING, SUMMER, FALL, WINTER), …

Java enum đã được thêm vào trong Java 5 cùng một số tính năng khác.

Enum trong java có thể được định nghĩa bên trong hoặc bên ngoài một lớp, vì nó tương tự như lớp trong java.

Kết quả:

Kết quả:

File Season.java

File EnumExample3.java

Kết quả:

Dưới đây là ví dụ đơn giản về việc duyệt các phần tử enum trong java:

Kết quả:

Trình biên dịch trong java tự động thêm phương thức values() vào enum khi nó được biên dịch. Phương thức values() trả về một mảng chứa tất cả các giá trị của enum.

Các hằng số enum có giá trị ban đầu bắt đầu từ 0, 1, 2, 3, … Nhưng chúng ta có thể khởi tạo giá trị cụ thể cho các hằng số enum bằng cách định nghĩa các trường và các Constructor. Như đã giới thiệu, Enum có thể có các trường, phương thức và Constructor.

Ví dụ 1: về định nghĩa giá trị ban đầu cho hằng số enum:

Kết quả:

Note: Constructor của enum trong java là private. Khi bạn không khai báo là private thì trình biên dịch sẽ tạo ra Constructor private.

Ví dụ 2: về định nghĩa nhiều giá trị cho hằng số enum:

Tạo enum PageInfo với tên file PageInfo.java:

Tạo lớp Test.java để sử dụng enum đã tạo ở trên:

Kết quả:

Dưới đây là ví dụ về sử dụng java enum trong câu lệnh switch:

Kết quả:

Bạn có thể sử dụng phương thức equals() hoặc toán tử ‘==’ để so sánh các phần tử enum, ví dụ:

package vn.viettuts.javaenum;

public class EnumExample7 {
    // define days of week
    enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
        SATURDAY, SUNDAY
    }

    public static void main(String args[]) {
        Day day1 = Day.SUNDAY;
        Day day2 = Day.MONDAY;
        // use equal() method
        if (day1.equals(Day.SUNDAY)) {
            System.out.println("sunday");
        }
        // use '==' operator
        if (day2 == Day.MONDAY) {
            System.out.println("monday");
        }
    }
}