Enum
Duy Văn | 11/03/2025
enum là một class đặc biệt cho phép tạo ra một nhóm các giá trị constant để sử dụng (tác dụng như final), ví dụ
enum Level {
LOW,
MEDIUM,
HIGH
}
Chúng ta có thể sử dụng chúng một cách bình thường, ví dụ trong class
class Main {
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
System.out.println(myVar);
}
}
Hay trong một switch case
public class Main {
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
switch(myVar) {
case LOW:
System.out.println("Low level");
break;
case MEDIUM:
System.out.println("Medium level");
break;
case HIGH:
System.out.println("High level");
break;
}
}
}
Lý do tại sao lại tồn tại enum là để cho các trường hợp khi biến chúng ta đặt ra chỉ có thể lấy giá trị thuộc một bộ giá trị nhỏ, ví dụ như contract status có thể là permanent, temporary, apprentice, hoặc day of week có thể là Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
Sử dụng enum thay vì integers hoặc string sẽ tăng compile-time checking và giảm lỗi xảy ra do pass sai giá trị constants, chúng ta cũng có thể doc đàng hoàng về giá trị nào có thể được sử dụng
Tuy nhiên, lạm dụng enum nghĩa là method của chúng ta đang làm quá nhiều, nên tìm cách cấu trúc lại
Một ví dụ để cho thấy enum sẽ làm code gọn đi rất nhiều
public class Color {
private Color() {} // Prevent others from making colors.
public static final Color RED = new Color();
public static final Color AMBER = new Color();
public static final Color GREEN = new Color();
}
Nó sẽ có giá trị tương đương với
public enum Color { RED, AMBER, GREEN };
Và đều có thể gọi với
Color trafficLightColor = Color.RED;