Đầu tiên tôi sẽ nói rằng tôi quen thuộc hơn với các enum trong C # và có vẻ như các enum trong java là một mớ hỗn độn.
Như bạn có thể thấy, tôi đang cố gắng sử dụng câu lệnh switch @ enums trong ví dụ tiếp theo của mình nhưng tôi luôn gặp lỗi bất kể tôi đang làm gì.
Lỗi tôi nhận được là:
Nhãn trường hợp đủ điều kiện
SomeClass.AnotherClass.MyEnum.VALUE_A
phải được thay thế bằng hằng số enum không đủ tiêu chuẩnVALUE_A
Vấn đề là tôi khá hiểu lỗi nhưng tôi không thể viết VALUE_A vì enum nằm trong một lớp con khác. Có cách nào để giải quyết vấn đề này? Và tại sao nó lại xảy ra trong Java?
//Main Class
public class SomeClass {
//Sub-Class
public static class AnotherClass {
public enum MyEnum {
VALUE_A, VALUE_B
}
public MyEnum myEnum;
}
public void someMethod() {
MyEnum enumExample //...
switch (enumExample) {
case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
//..
break;
}
}
}
}
Enum
là vô cùng tiện dụng khi bạn nhận được hang của họ - không phải ở tất cả một mớ hỗn độn. Chúng linh hoạt và thực tế hơn nhiều so với các enum đơn giản (chỉ đơn thuần là một giá trị số nguyên được gắn nhãn) như đã thấy trên các nền tảng khác. Xem Hướng dẫn của Oracle . Khám phá các tối ưu hóaSet
/Map
triển khai:EnumSet
&EnumMap
.