2014-12-19 2 views
1
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 인 이유는 무엇입니까?열거 형의 같음 메서드

+0

가능한 중복 :

예를 들면 열거 형의 비교는 다음과 같이하고있다 [자바 ENUM 부재를 비교 == 또는 동등()? (http://stackoverflow.com/questions/1750435/comparison-java-enum-members-or-equals) – Smutje

+0

두 개의 다른 객체이기 때문에. – Jens

+0

그들이 동일한 이름을 가지고 있기 때문에 그런 것은 아닙니다. 열거 형이라하더라도 여전히 대상입니다. –

답변

5

열거 형을 개체로 비교합니다. 이들은 서로 다른 클래스의 두 가지 별개의 객체입니다. 왜 그들은 평등해야합니까? A, B, C -는 변수의 이름 일뿐입니다. 비교 작업에는 아무런 의미가 없습니다. 출력은 인스턴스 클래스의 같은 클래스로 EnumEqualsMethodA, B, C 생각한다 거짓 이유를 이해하기 위해

+0

다른 열거 형 클래스의 상수에 대해 equals 메서드를 사용할 수 없습니다. 맞습니까? –

+0

참조, 참조 이름 및 개체 간의 차이점을 이해해야합니다. 다시 한번 참조 이름은 객체의 평등을 의미하지 않습니다. – Mikhail

+1

'enum' 상수에'equals()'를 사용할 수 있지만, 아무런 의미가 없습니다. 'enum'의 경우'=='와 같습니다. 자바'enum '에 대한 한가지 장점은 각각 자신의 네임 스페이스가 있다는 것입니다. 그래서'EnumEqualsMethod'의'C'는'EnumEqualsMethod1'의'C'와 아무런 관련이 없습니다. –

0

.

Class1 a = new Class1(); 
Class2 b = new Class2(); 

System.out.print(a.equals(b));