Enums
An enum
là một “lớp” đặc biệt đại diện cho một nhóm các hằng số (các biến không thể thay đổi, như final
các biến).
Để tạo một enum
, hãy sử dụng enum
từ khóa (thay vì lớp hoặc giao diện) và phân tách các hằng số bằng dấu phẩy. Lưu ý rằng chúng phải được viết hoa:
Thí dụ
enum Level {
LOW,
MEDIUM,
HIGH
}
Bạn có thể truy cập các enum
hằng số bằng cú pháp dấu chấm :Level myVar = Level.MEDIUM;Hãy tự mình thử »
Enum là viết tắt của “enumerations”, có nghĩa là “được liệt kê cụ thể”.
Đăng ký bên trong một lớp học
Bạn cũng có thể có một enum
bên trong một lớp:
Thí dụ
public class Main {
enum Level {
LOW,
MEDIUM,
HIGH
}
public static void main(String[] args) {
Level myVar = Level.MEDIUM;
System.out.println(myVar);
}
}
Đầu ra sẽ là:MEDIUM
Hãy tự mình thử »
Đăng ký trong một tuyên bố chuyển đổi
Enums thường được sử dụng trong các switch
câu lệnh để kiểm tra các giá trị tương ứng:
Thí dụ
enum Level {
LOW,
MEDIUM,
HIGH
}
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;
}
}
}
Đầu ra sẽ là:Medium level
Hãy tự mình thử »
Vòng qua một Enum
Kiểu enum có một values()
phương thức, phương thức này trả về một mảng gồm tất cả các hằng số enum. Phương thức này hữu ích khi bạn muốn lặp qua các hằng số của một enum:
Thí dụ
for (Level myVar : Level.values()) {
System.out.println(myVar);
}
Đầu ra sẽ là:LOW
Hãy tự mình thử »
MEDIUM
HIGH
Sự khác biệt giữa Enums và Class
Một enum
can, giống như a class
, có các thuộc tính và phương thức. Sự khác biệt duy nhất là hằng số enum là public
, static
và final
(không thể thay đổi – không thể bị ghi đè).
An enum
không thể được sử dụng để tạo các đối tượng và nó không thể mở rộng các lớp khác (nhưng nó có thể triển khai các giao diện).
Tại sao và khi nào sử dụng Enums?
Sử dụng enums khi bạn có các giá trị mà bạn biết là sẽ không thay đổi, chẳng hạn như ngày tháng, ngày tháng, màu sắc, bộ bài, v.v.