public enum EnumEqualsMethod {
A,B,C
}
public enum EnumEqualsMethod1 {
A,C,D
}
EnumEqualsMethod a = EnumEqualsMethod.C;
ЕnumEqualsMethod1 b= EnumEqualsMethod1.C;
System.out.println(a.equals(b));
輸出爲false
。爲什麼?枚舉類型中的等於方法
public enum EnumEqualsMethod {
A,B,C
}
public enum EnumEqualsMethod1 {
A,C,D
}
EnumEqualsMethod a = EnumEqualsMethod.C;
ЕnumEqualsMethod1 b= EnumEqualsMethod1.C;
System.out.println(a.equals(b));
輸出爲false
。爲什麼?枚舉類型中的等於方法
將枚舉比較爲對象。這些是不同類別的兩個不同對象。他們爲什麼要平等? A,B,C - 只是變量的名稱。他們沒有什麼比較操作。
我們不能在不同的枚舉類中使用equals方法來表示常量。 – 2014-12-19 11:38:30
您應該瞭解參考,參考名稱和對象之間的區別。再次引用名稱並不意味着對象的平等。 – Mikhail 2014-12-19 11:40:29
你可以使用'equals()'作爲'enum'常量,但沒有意義。它與'enum'的'=='相同。關於java enum的一個好處是它們都有自己的名字空間,所以'EnumEqualsMethod'中的'C'與'EnumEqualsMethod1'中的'C'無關。 – 2014-12-19 11:44:56
爲了理解爲什麼輸出是假的,你應該想到EnumEqualsMethod
作爲類和A, B, C
爲實例是類。
例如,枚舉的比較是像做以下內容:
Class1 a = new Class1();
Class2 b = new Class2();
System.out.print(a.equals(b));
可能重複的[比較爪哇枚舉成員:==還是equals()?(http://stackoverflow.com/questions/1750435/comparison-java-enum-members-or-equals) – Smutje 2014-12-19 11:36:21
因爲那是兩個不同的對象。 – Jens 2014-12-19 11:36:31
這不是因爲它們具有相同的名稱,而是與它們相等。即使它們是枚舉,它們仍然是對象。 – 2014-12-19 11:44:34