Я хочу сравнить значение Enum, как в примере.Как сравнить значение Enum?
public enum En{
Vanila("Good"),
Marlena("Luck"),
Garnela("Good");
private String value;
private En(String s){
this.value = s;
}
}
AS Vanila
и Garnela
имеют такое же значение, сравнивая их должны вернуть истинный. Есть два способа: ==
оператор, а второй - equals()
метод. Я попробовал свою собственную логику и добавил этот метод в перечисление.
public boolean compareValue(En e){
return (this.value).equals(e.value);
}
И теперь он отлично работает.
En a = En.Vanila;
En b = En.Garnela;
En c = En.Marlena;
if(a.compareValue(b)){
System.out.println("a == b");
}
if(a.compareValue(c)){
System.out.println("a == c");
}
if(b.compareValue(c)){
System.out.println("b == c");
}
Я знаю, что мы не можем переопределить равно методы в перечислении (Не знаю, почему, я знаю, что это финал, но не логически причина. Можете ли вы объяснить, почему мы не можем переопределить равна() в перечислении?).
Любое как есть любой способ сделать это эффективно или это нормально?
Пункт перечисления - это каждый из них имеет свою личность. зачем это испортить? –
@NathanHughes, потому что Java разрешает это. – UnKnown
Просто используйте '==' для сравнения идентичности, он работает лучше всего. – markspace