Java Enum - 놓치기 쉬운 개념들

이강현·2025년 4월 17일

놓치기 쉬운 개념들

목록 보기
13/19

Singleton

  • enum 클래스를 사용하는 것은 Singleton pattern을 구현하는 간단하고 안전한 방법입니다.

상수자신의 인스턴스를 가지고 생성자 호출을 막아서 인스턴스를 요구할 때 마다 기존의 동일한 인스턴스를 제공하는 싱글톤 패턴은 enum 클래스의 기능에 그대로 포함되어 있습니다.
기본적으로 제공되는 메서드들도 있습니다.

Enum Class

  • java.lang 의 추상 클래스 Enum 은 모든 enum 클래스의 조상입니다.
  • 따라서 enum 클래스를 만들면 기본적으로 상속받는 메서드들이 있습니다.
    • values() 는 컴파일러에 의해 자동 추가되는 메서드 입니다. Enum 에서 상속받는 방식이 불가능한 이유는 static 메서드에 제네릭 타입 변수를 사용하는것이 불가능하기 때문입니다.
메서드설명
values()열거형에 정의된 모든 상수들을 배열 형태로 반환합니다. 정의된 순서대로 배열에 담겨 있습니다.
valueOf(String name)주어진 이름과 일치하는 열거형 상수를 반환합니다. 대소문자를 구분하며, 일치하는 이름이 없으면 IllegalArgumentException이 발생합니다.
name()해당 열거형 상수의 이름을 문자열로 반환합니다. 이는 열거형 정의 시 사용한 이름과 동일합니다.
ordinal()해당 열거형 상수가 정의된 순서 (0부터 시작하는 인덱스)를 반환합니다.
toString()기본적으로 name() 메서드와 동일한 값을 반환합니다. 필요에 따라 오버라이드하여 다른 문자열 표현을 제공할 수 있습니다.
equals(Object other)두 객체가 동일한 열거형 상수인지 비교합니다. 열거형 상수는 유일한 인스턴스이므로 == 연산자와 동일하게 동작합니다.
hashCode()해당 열거형 상수의 해시 코드를 반환합니다. 동일한 열거형 상수는 동일한 해시 코드를 가집니다.
compareTo(E o)해당 열거형 상수를 지정된 다른 열거형 상수와 비교합니다. 정의된 순서(ordinal 값)를 기준으로 비교하여 순서가 빠르면 음수, 같으면 0, 늦으면 양수를 반환합니다.
profile
백엔드 개발자 지망생입니다.

0개의 댓글