Tôi đã cố gắng sử dụng Enum trên LHS [Ticket (status == EStatus.OK)], tôi nhận được lỗi biên dịch thời gian như sau:
BuildError: Không thể phân tích tình trạng biểu == EStatus.OK Lỗi: không thể giải quyết phương pháp sử dụng nghiêm ngặt chế độ: ....
Giải pháp:
Trong LHS quy tắc, chúng ta phải so sánh với giá trị Hằng số ... ví dụ: người dùng: Người dùng (tuổi> 60) - ở đây chúng tôi so sánh độ tuổi với Giá trị không đổi 60.
Vì vậy, để sử dụng Enum, Ticket (status == EStatus.OK) ... Tôi đã phải sử dụng một số liên tục thay cho EStatus.OK để so sánh điều này với trạng thái. Vì lý do này, tôi đã sử dụng một phương pháp tĩnh trong Enum.
Vì vậy, các LHS cai trị bây giờ trông giống như: vé (status == EStatus.getEStatus (1))
và EStatus enum là như sau:
enum công EStatus {
// you can use values other than int also
OK(1),
ERROR(2);
private int value;
EStatus (số int) { this.value = number; }
public int valueOf()
{
return this.value;
}
public static EStatus getEStatus(int value){
EStatus eStatus = null;
for(EStatus e : EStatus.values()){
if(e.valueOf() == value){
eStatus = d;
break;
}
}
return eStatus;
}
}
Tôi đã thử nghiệm này sử dụng jdk 1.6 và cả Linux và môi trường Windows.
Tận hưởng mã hóa!
Nguồn
2012-09-13 11:02:02
Cảm ơn vì đã chỉ nó ra. Bây giờ nó cũng làm việc cho tôi. Thật lạ lùng, bởi vì tôi đã xác minh nhiều lần vấn đề trước khi đăng nó ở đây. Cái gì đó có thể xảy ra nhất ... – Calin