4.1) OCJP/1Z0-851 / 2012-08-28

OCJP (1Z0-851 / 2012-08-28 / Exam B) - 9 번

kkikkodev 2015. 8. 19. 00:37



관련 이론 및 문법

(열거형 (enumeration) 참고)

http://kkikkodev.tistory.com/131


문제 의도

다음 보기 중, 주어진 열거형에 대한 설명 중, 참인 것을 고르는 문제입니다.


답안

A


풀이 방법

주어진 열거형은 Example 이라는 이름의 열거형이고, 값으로는 ONE, TWO, THREE 3 개가 상수로 존재합니다. 


먼저, 보기 A 는 ONE == ONE 과 ONE.equals(ONE) 은 true 를 보장한다는 것인데, 열거형 값은 기본적으로 상수 객체로 인식되기 때문에, static final 이 자동으로 붙는다고 보시면 됩니다. 상수는 메모리상에 같은 주소값을 가지게 되고 (같은 값을 공유한다는 의미) equals 메소드를 살펴보면 실제로 두 열거형 객체 간의 인스턴스 값을 직접 비교하므로 (주소값 비교), 두 열거형 값이 같다면, == 과 equals 메소드 모두 true 를 반환한다고 보면 됩니다. 따라서 답안은 A 가 됩니다.


보기 B 는, ONE < TWO 가 true 이면, ONE.compareTo(TWO) 는 1 보다 작은 값을 반환한다는 것입니다. Enum 의 compareTo 메소드는 비교하려는 열거형 값들의 위치를 뺀 값을 반환하는데, 위의 열거형에서 ONE 의 위치인 0 에서 TWO 의 위치인 1 을 빼면 -1 이 반환값이 됩니다. 하지만, 열거형에서는, < 연산자의 사용을 허락하지 않습니다. 따라서, ONE < TWO 문장 자체가 잘못되었으므로, 답안 후보에서 제외합니다.


보기 C 는, Example 열거형 값은 HashMap 에서 사용될 수 없고, 대신 EnumMap 에서 사용해야만 한다는 것입니다. 열거형은 Enum 을 상속하고, Enum 은 Object 를 상속하므로, 기본적으로 HashMap 의 key 와 value 로 Object 를 넣을 수 있으므로, 열거형을 사용해도 됩니다. 따라서 답안 후보에서 제외합니다.


보기 D 는, Exmample 열거형 값은 SortedSet 에서 사용될 수 있지만, 정렬은 안되는데, 그 이유는 Comparable 을 상속하지 않기 때문이다는 것입니다. 열거형은 Enum 을 상속하고, Enum 은 Object 외에도, Comparable 과 Serializable 인터페이스를 추가적으로 상속하고 있기 때문에 답안 후보에서 제외합니다.


결과적으로 답안은 A 가 됩니다.