我想比较Enum的值,例如。
public enum En{
Vanila("Good"),
Marlena("Luck"),
Garnela("Good");
private String value;
private En(String s){
this.value = s;
}
}
AS Vanila
和Garnela
具有相同的值,比较它们应该返回true。有两种方法,一种是==
运算符,第二种是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");
}
我知道我们不能在枚举中覆盖equals方法(不知道为什么,我知道这是最终的但不是逻辑上的原因。你能解释一下,为什么我们不能在枚举中覆盖equals()?)
有没有其他方法可以有效地做到这一点,还是没有问题?
答案 0 :(得分:1)
在枚举中,每个实例都代表着一个与众不同的东西。枚举值用于描述该事物,使其具有人类可读性等。
因此,您的代码没有理由认为Vanilla可能与Marlena相同。为它们设置相同的字符串值是没有意义的。