Próbowałem użyć Enum na LHS [Ticket (status == EStatus.OK)], otrzymałem komunikat o błędzie kompilacji podobny do następującego:
BuildError: Nie można analizować stan Expression == EStatus.OK BŁĄD: Nie można rozwiązać stosując metodę ścisłą-mode: ....
Rozwiązanie:
W LHS reguły, musimy porównać o stałej wartości ... na przykład: użytkownik: użytkownik (wiek> 60) - tutaj porównujemy wiek ze stałą wartością 60.
Tak więc za korzystanie z Enum, bilet (status == EStatus.OK) ... Musiałem użyć trochę stałej zamiast EStatus.OK, aby porównać to ze statusem. Z tego powodu użyłem jednej metody statycznej w Enum.
Tak, LHS z reguły wygląda teraz tak: Ticket (status == EStatus.getEStatus (1))
i EStatus enum jest jak następuje:
public enum EStatus {
// you can use values other than int also
OK(1),
ERROR(2);
private int value;
EStatus (liczba int) { this.value = liczba; }
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;
}
}
Ja testowałem to przy użyciu JDK 1.6 i zarówno w środowisku Linux i Windows.
Ciesz się kodowaniem!
Dzięki za wskazanie go. Teraz działa również dla mnie. To dziwne, ponieważ kilkakrotnie weryfikowałem problem przed opublikowaniem go tutaj. Najprawdopodobniej coś wymknęło się ... – Calin