Mặc dù sử dụng enums là loại an toàn, nhu cầu chuyển đổi enum thành chuỗi và ngược lại là khá thường xuyên. Và không có tính năng tích hợp để làm điều đó trong Java. Và cuối cùng bạn sẽ sử dụng hàm valueOf() và toString(). Và sử dụng cách tiếp cận đó sẽ không khác nhiều so với việc sử dụng các chuỗi. Bởi vì bạn sẽ cần phải xử lý các tình huống mà chuỗi không thể được chuyển đổi thành Enum.
Vì vậy, chỉ cần sử dụng chuỗi cuối cùng tĩnh là dễ dàng và là một thực tế phổ biến, AFAIK.
Ví dụ: bạn sẽ muốn tương tác với máy chủ bằng cách sử dụng một số API. Bạn sẽ cần phải xác định mọi phương thức và phản hồi là Enum. Và sau đó bạn sẽ cần thêm các phương thức toString và valueOf. Tại sao không sử dụng String?
@Martin: Tôi nghĩ suy nghĩ của việc so sánh các đầu vào với chuỗi const nếu không ném một ngoại lệ đầu vào không hợp lệ, không tốt đẹp. Tôi hỏi câu hỏi vì gợi ý về các khóa mở, điều này dường như làm giảm khái niệm WORA trong Java. –