jujuwon
시크릿주주
jujuwon
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • 🔠 프로그래밍언어 (35)
      • ☕️ Java (19)
      • 🐠 Python (15)
      • 🍠 Kotlin (1)
    • 🔙 Backend (16)
      • 🌿 Springboot (12)
      • 🐳 Docker (1)
      • ☁️ AWS (3)
    • 💼 CS (12)
      • 📶 Network (12)
    • 🕹 알고리즘 (14)
      • 📑 스터디 (2)
      • 💁🏻‍♂️ 백준 (9)
      • 👨🏼‍🔬 프로그래머스 (3)
    • 📚 Book (8)
      • 🔎 오브젝트 (4)
      • 🧪 TDD (2)
      • 📜 논문 (2)
    • 🔐 보안 (7)
      • 👾 Pwnable (7)
    • 📝 회고 (4)
    • 🧩 etc. (10)
      • ⚠️ issue (2)
      • 💡 꿀팁 (7)
      • ✏️ 끄적 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

hELLO · Designed By 정상우.
jujuwon
🔠 프로그래밍언어/☕️ Java

Java :: 열거형 - Enumeration

Java :: 열거형 - Enumeration
🔠 프로그래밍언어/☕️ Java

Java :: 열거형 - Enumeration

2022. 12. 13. 11:18
반응형

 

열거형(Enumeration)


  • 관련된 상수들을 같이 묶어 놓은 것
    • Java 는 타입에 안전한 열거형을 제공
class Menu {
    enum CoffeeMenu { ESPRESSO, AMERICANO, LATTE }
    enum TeaMenu { GREEN_TEA, YUTU_TEA }

    CoffeeMenu coffeeMenu;
    TeaMenu teaMenu;
}

안전한 열거형이란 무슨 의미일까?

예를 들어 아래처럼 열거형을 사용하지 않고 상수로 관리한다고 생각해보자.

 

class Menu {
    static int ESPRESSO = 0;
    static int AMERICANO = 1;
    static int LATTE = 2;

    static int GREEN_TEA = 0;
    static int YUJU_TEA = 1;
}

if (Menu.ESPRESSO == Menu.GREEN_TEA) // true 가 되어버림.. 실수하면 로직 버그 가능

하지만 열거형에서는 이런 실수를 방지할 수 있다.

 

정의 및 사용

enum Direction { EAST, SOUTH, WEST, NORTH }

class Unit {
    int x, y;
    Direction direction;

    void init() {
        direction = Direction.EAST;
    }
}
  • 열거형 상수 비교에 == 과 compareTo() 사용 가능

 

if (direction == Direction.EAST) {
    ...
} else if (direction > Direction.WEST) { // 이건 안됨.
    ...
} else if (direction.compareTo(Direction.WEST) > 0) { // 이건 가능.
    ...
}

 

열거형의 조상 java.lang.Enum

  • 모든 열거형은 Enum 의 자손이고, 아래 메소드를 상속받음
Class<E> getDeclaringClass() // 열거형의 Class 객체를 반환
String name() // 열거형 상수의 이름을 문자열로 반환
int ordinal() // 열거형 상수가 정의된 순서를 반환 (0부터 시작)
T valueOf(Class<T> enumType, String name) // 지정된 열거형에서 name 과 일치하는 열거형 상수 반환

// 컴파일러가 자동 추가해주는 메소드
static E values()
static E valueOf(String name)

 

열거형에 멤버 추가하기

  • 불연속적인 열거형 상수의 경우, 원하는 값을 괄호 안에 적기
enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10); }
  • 괄호에는 여러 개의 값을 넣을 수도 있음
  • 대신 괄호를 사용하려면 인스턴스 변수와 생성자를 새로 추가해줘야 함

 

enum Direction {
    EAST(1), SOUTH(5), WEST(-1), NORTH(10);

    private final int value;
    Direction(int value) { this.value = value; } // 열거형 생성자는 묵시적 private

    public int getValue() { return value; }
}

 

 

728x90
반응형
저작자표시
  • 정의 및 사용
  • 열거형의 조상 java.lang.Enum
  • 열거형에 멤버 추가하기
'🔠 프로그래밍언어/☕️ Java' 카테고리의 다른 글
  • Java :: 예외 처리
  • Java :: 어노테이션(Annotation)
  • Java :: 팩토리(Factory) 메소드 패턴
  • Java :: 싱글톤(Singleton) 패턴
jujuwon
jujuwon

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.