Tôi đã xem qua tài liệu và mã nguồn, vì tôi muốn chắc chắn rằng các giá trị() sẽ luôn trả về một mảng theo thứ tự trong đó các giá trị Enum được khai báo. Hóa ra, nó không phải là in the documentation theo như tôi có thể nói.Từ whence cometh Enum.values ()?
Tôi đã kiểm tra mã nguồn cho lớp Enum và không có may mắn (there is a related, private "getValues" method).
Vì vậy, tôi đoán rằng một số trình biên dịch/phiên dịch-foo đã xảy ra để tạo ra một lớp mà kéo dài Enum ra khỏi một khai báo như sau:
public static enum MyEnum
Vậy là giá trị() cũng tĩnh dịch sang một mảng hardcoded trong quá trình biên dịch? Hoặc là nó thực sự là một phương pháp gọi là lúc chạy, và nếu như vậy, nó được định nghĩa ở đâu?
Nếu bạn quan tâm nhiều, điều đó có thể có nghĩa là một cái gì đó sẽ bị hỏng nếu trong tuyên bố enum của bạn bạn di chuyển công cụ xung quanh. Điều đó thật sự rất mỏng manh. Vì vậy, tôi muốn nói nếu bạn quan tâm, bạn có thể có một thiết kế kỳ lạ. Tại sao nó quan trọng với bạn rằng họ đang theo thứ tự? –
+1 Chỉ dành cho tiêu đề. – Zoe
@Mark Peters - Bởi vì tôi đang sử dụng enums cho các mục menu được sắp xếp ở nhiều nơi. Chắc chắn, tôi có thể tạo ra một số loại chức năng đặt hàng trả lại chúng theo thứ tự nào đó ... nhưng tại sao? Nó sẽ không phá vỡ nếu tôi di chuyển chúng, nó sẽ chỉ thay đổi thứ tự chúng được trình bày trong ứng dụng. – DougW