我想比较 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() 吗?) .
有没有其他方法可以有效地做到这一点,或者可以吗?
最佳答案
在枚举中,每个实例都代表一个独特的事物。枚举值用于描述该事物,使其易于人类阅读等。
因此,您的代码没有理由认为 Vanilla 可以等于 Marlena。为它们设置相同的字符串值是没有意义的。
关于java - 如何比较枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758713/