Я пытался использовать Enum на LHS [Ticket (status == EStatus.OK)], я получаю ошибку времени компиляции, например, такую:
BuildError: Невозможно проанализировать состояние выражения == EStatus.OK Ошибка: невозможно разрешить метод с использованием строгого режима: ....
Решение:
В правиле LHS мы должны сравнить со значением константы ... дляпример: пользователь: пользователь (возраст> 60) - здесь мы сравниваем возраст со значением константы 60.
Так что для использования Enum, Ticket (status == EStatus.OK) ... Мне пришлось использовать некоторую константувместо EStatus.OK, чтобы сравнить это со статусом.По этой причине я использовал один статический метод в Enum.
Итак, LHS правила теперь выглядит так: Ticket (status == EStatus.getEStatus (1))
и перечисление EStatus равнонапример:
public enum EStatus {
// you can use values other than int also
OK(1),
ERROR(2);
private int value;
EStatus (int number) {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;
}
}
Я проверил это с использованием jdk 1.6 и в среде Linux и Windows.
Наслаждайтесь кодированием!