Có cách nào chuyển đổi một enum thành một biểu thức không đổi? Tôi muốn điều hành chuyển đổi của tôi để lựa chọn trong số các giá trị của một enum, nhưng tôi có một lỗi biên dịch "trường hợp biểu thức phải là biểu thức hằng số", vì vậy tôi đã cố gắng để khai báo nó trong một biến:Biểu thức không đổi từ một Enum
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
Nhưng tôi vẫn gặp lỗi tương tự. Theo tài liệu của Oracle http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
Một thời gian biên dịch biểu thức hằng số là một biểu thức biểu thị một giá trị kiểu nguyên thủy hoặc một String mà không hoàn thành đột ngột và là gồm chỉ sử dụng như sau:
• Literals thuộc loại nguyên thủy và chữ cái của loại Chuỗi
Vì vậy, nó không hoạt động vì tôi không sử dụng chữ. Tôi nghĩ rằng tôi sẽ phải khai báo nó là:
final int REG = 8;
Nhưng tốt hơn nên liên kết nó với enum. Có cách nào để làm điều này không?
EDIT
Hóa ra tôi không cần phải sử dụng bất kỳ biến thức. Nó cũng đơn giản như:
switch (service) {
case REG:
Nó không xảy ra với tôi cho đến khi tôi thấy nhận xét của Andrea. Cảm ơn câu trả lời của bạn.
tôi giả sử rằng 'service.getIndex()' lợi nhuận 'Integer ', đúng không? Bạn có thể sửa đổi nó để nó trả về enum của bạn? –
Cho đến Java 1.6 bạn không thể sử dụng 'Chuỗi' trong' trường hợp chuyển đổi', nhưng bạn có thể sử dụng nó trong Java 7. FYI – Joshi