본문 바로가기
Programming Language/Java & Kotlin

[Java] Enum 클래스

by happy coding! 2019. 4. 18.
반응형

열거체(enumeration type)

  • JDK 1.5부터는 C언어의 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있음

열거체의 장점

  • 열거체를 비교할 때 실제 값 뿐만 아니라 타입까지도 체크함
  • 열거체의 상수값이 재정의 되더라도 다시 컴파일할 필요가 없음

열거체의 정의 및 사용

  • 자바에서는 enum 키워드를 사용하여 열거체를 정의할 수 있음

    enum 열거체이름 { 상수1이름, 상수2이름, ... }
    
    enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
  • 이렇게 정의된 열거체는 다음처럼 사용함

  • 열거체이름.상수이름

  • Rainbow.RED

열거체의 상수값 정의 및 추가

  • 열거체의 첫번째 상수값은 0부터 설정되며, 그다음은 바로 앞의 상수값보다 1만큼 증가되며 설정됨
  • 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호() 를 추가하고, 그 안에 원하는 상수값을 명시할 수 있음
  • 이때에는 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 아래와 같이 별도로 추가해야함

java.lang.Enum 클래스

  • Enum 클래스는 모든 자바 열거체의 공통된 조상 클래스
  • Enum 클래스에는 열거체를 조작하기 위한 다양한 메소드가 포함되어 있음

values() 메소드

  • values() 메소드는 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환함
  • 이 메소드는 자바의 모든 열거체에 컴파일러가 자동으로 추가해 주는 메소드

valueOf() 메소드

  • valueOf() 메소드는 전달된 문자열과 일치하는 해당 열거체의 상수를 반환함

ordinal() 메소드

  • ordinal() 메소드는 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함
  • 이때 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서이며, 상수값 자체가 아님

대표적인 Enum 메소드

  • static E values() : 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환
  • static E valueOf(String name) : 전달된 문자열과 일치하는 해당 열거체의 상수를 반환
  • protected void finalize() : 해당 Enum 클래스가 final 메소드를 가질 수 없게 됨
  • String name() : 해당 열거체 상수의 이름을 반환함
  • int ordinal() : 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함

[출처] : http://tcpschool.com/java/java_api_enum

반응형

'Programming Language > Java & Kotlin' 카테고리의 다른 글

[Java] 리팩토링 할 때 고려할 사항들  (0) 2021.05.30
[Java] 람다식  (0) 2019.06.13
[Java] 스트림 API  (0) 2019.04.16
[Java] 람다 표현식  (0) 2019.04.15
[Java] StringBuffer  (1) 2018.12.01

댓글