Đó là vì enums là loại lớp học đặc biệt. Nếu chúng ta hãy nhìn vào các lĩnh vực bên trong Season.WINTER, ví dụ:
for (Field field : Test.Season.WINTER.getClass().getFields())
System.out.println(field);
Chúng tôi sẽ thấy như đầu ra:
public static final TestEnum$Test$Season TestEnum$Test$Season.WINTER
public static final TestEnum$Test$Season TestEnum$Test$Season.SPRING
public static final TestEnum$Test$Season TestEnum$Test$Season.SUMMER
public static final TestEnum$Test$Season TestEnum$Test$Season.FALL
Vì vậy, mỗi giá trị enum là thực sự cũng là một tĩnh liên tục của lớp enum, Season và do đó có quyền truy cập vào các trường tĩnh của Season hoặc các giá trị enum khác (bao gồm cả chính nó).
Tuy nhiên, có thể tốt hơn là chỉ truy cập các giá trị enum trực tiếp từ enum, như Season.SPRING, vì nó đơn giản hơn và ít có khả năng gây nhầm lẫn cho người đọc mã của bạn.
Nguồn
2011-01-20 00:17:33
Điều đó tương đương với 'WINTER | SPRING'? –
Season.WINTER.SPRING tương đương với Season.SPRING –
Zach L là đúng. –