Enum trong java thực chất là 1 class với số lượng instance cố định.
Nội dung bài viết
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.
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!
😀 em cảm ơn chị
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!