enum

2024. 5. 1. 01:12JAVA

enum이란?

특정 범위의 값을 지정해두고 제공하는 열거형 타입이다.

 

왜 사용하는가?

Spring 사용 시 타입 안정성 부족 

- 값의 제한이 어려움 : 대/소문자 구분, 오타 등을 관리 하기 어렵다.

 

- 컴파일 오류 감지 불가 : 오타와 같은 상황이 발생해도 단순한 String 이므로 컴파일 단계에서 오류를 잡을 수 없다. -> 런타임 오류로 직결됨.

 

 

Comparable

Enum 에서 comaprable 인터페이스의 compareTo()를 사용할 땐 항상 주의해야 한다.

Object 와 같이 enum 타입은 Enum을 상속하는데, Enum에는 이미 comparable 을 구현한 메서드가 있다.

public final int compareTo(E o) {
        Enum<?> other = o;
        Enum<E> self = this;
        if (self.getClass() != other.getClass() && // optimization
            self.getDeclaringClass() != other.getDeclaringClass())
            throw new ClassCastException();
        return self.ordinal - other.ordinal;
    }

return 부분을 보면 ordinal 을 피연산자로 사용하고 있는데,

ordinal 은 enum에 열거한 타입들의 순서이다.

 

작성 순서에 따라 ordinal 값이 바뀌는데, 작업하다 순서 바뀌거나, 중간에 추가되거나 하면 그 때마다 각 타입이 갖는 값(ordinal)들이 달라진다.

 

따라서, ordinal은 비교 대상으로 적합하지 않다.

 

 

'JAVA' 카테고리의 다른 글

중첩 클래스 -정적 중첩 클래스  (0) 2024.05.28
중첩 클래스  (0) 2024.05.28
String_String pool  (0) 2024.04.17
Object OCP(Open Closed Principle)  (0) 2024.04.05
java.lang_Object Class  (0) 2024.04.05