Bản chất của Enum trong java

Enum trong java thực chất là 1 class với số lượng instance cố định.

I. Trường hợp không có instance variables

Ví dụ

public enum Season {
    SPRING, SUMMER, FALL, WINTER
}
  • Đây là 1 class chỉ có 4 instances SPRING, SUMMER, FALL, WINTER không hơn.
  • 4 instance này là constant nên viết hoa và mặc định là public static

Cách sử dụng:

public class App {

    public static void main(String[] args) {
        
        //Gọi trực tiếp từ class vì nó là static
        System.out.println(Season.SPRING); //SPRING
        System.out.println(Season.SUMMER); //SUMMER
        System.out.println(Season.FALL);   //FALL
        System.out.println(Season.WINTER); //WINTER
    }
}

II. Trường hợp có instance variables

Trong trường hợp này, số lượng instance của class cũng là cố định, 4 instances, nhưng trong mỗi instance lại chứa những thông tin khác nhau, tùy vào việc khai báo instance variables.

package com.giangtester.blog;

public enum Season2 {
    // instance của class Season2
    SPRING("spring", 1),
    SUMMER("summer", 2),
    FALL("fall", 3),
    WINTER("winter", 4);
		
    // instance variables
    private final String name;
    private final int order;

    // constructor này mặc định là private
    Season2(String name, int order) {
        this.name = name;
        this.order = order;
    }

    public String getName() {
        return name;
    }

    public int getOrder() {
        return order;
    }
}

Cách sử dụng:

public class App {

    public static void main(String[] args) {
        System.out.println(Season2.SPRING.getName()); //spring
        System.out.println(Season2.FALL.getOrder());  //3
    }
}

Note:

  • Bạn không thể kế thừa enum
  • Bạn có thể lấy được toàn bộ các instance của enum thông qua method .values(). Ví dụ
public class App {

    public static void main(String[] args) {
        for (Season2 season : Season2.values()) {
            System.out.printf("name: %s, order: %d \n", 
                              season.getName(), season.getOrder());
        }
    }
}
name: spring, order: 1 
name: summer, order: 2 
name: fall, order: 3 
name: winter, order: 4 

III. Tổng kết

Enum là 1 thứ rất powerful trong java, chứa những thông tin cố định, không thay đổi. Tuy nhiên, mình là không thấy nhiều các bạn tester sử dụng nó trong lập trình auto test, mà dùng những technique khác để làm những việc chính xác là của enum. Hi vọng qua bài này, các bạn hiểu được bản chất của enum và sử dụng enum đúng mục đích.

0 0 votes
Article Rating
Subscribe
Notify of
guest
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Trang
Trang
3 years ago

Bài viết rất hữu ích. Chị đang vận dụng khá nhiều vào auto test từ khi được em giới thiệu về Enum.
Thank em nhiều!

minato20119
minato20119
2 years ago

Nghe nhiều về Enum giờ mới biết mình đang dùng khá nhiều sessionVariable để khai báo + gọi mà vẫn dùng biến xong gán value.
Thanks u!