[Java] Enum

hwarye·2022년 11월 11일
0

Enum(Enumerated Type, 열거형)

여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 자바 문법 요소
=> 서로 연관된 상수들의 집합

상수(final)
변하지 않는 값
관례적으로 대문자로 작성한다.

👉🏻 WHY?

1) 상수명 중복 해결
2) 타입 안정성
3) 단순하고 가독성 좋은 코드
(+) enum으로 정의한 상수는 switch문에서도 사용 가능
(+) 구현의 의도가 열거임을 분명하게 알 수 있다.
(+) 요일이나 계절처럼 한정된 개수의 값들을 하나로 묶어서 사용하고 싶을 때, 열거 타입을 사용하면 편하다.

👉🏻 클래스

java.lang.Enum


🟡 작성법

enum 열거형이름 { 상수명1, 상수명2, 상수명3 ,.. }
  • 상수들에 값을 따로 지정해주지 않아도 자동으로 0부터 시작하는 정수값이 할당되어 각각의 정수를 가리킨다.

  • 자바에서는 enum의 값들을 클래스처럼 선언해서 사용할 수도 있다.

public enum Weeks {
  MONDAY("mon", 10),
  TUESDAY("tue", 20),
  WEDNESDAY("wed", 30),
  THURSDAY("thu", 40),
  FRIDAY("fri", 50), 
  STURDAY("sat", 60),
  SUNDAY("sun", 70);
  
  private final String name;
  private final int value;
  
  private Weeks(String name, int value) {
  	this.name = name;
    this.value = value;
  }
  
  public String getName() {
  	return this.name;
  }
  
  public int getValue() {
  	return this.value;
  }
}

🟡 열거형에 사용된 상수에 접근하는 방법

열거형이름.상수명

🟡 열거형 메서드

👉🏻 Static Methods

  • valueOf(String name)
    리턴 타입 : 열거 타입
    주어진 문자열의 열거 객체를 리턴한다.
  • valueOf(Class<T> class, String name)
    넘겨받은 class에서 String을 찾아, enum에 가져온다.
    valueOf(String name)은 내부적으로 자기자신의 Class를 가져온다.
  • values()
    리턴 타입 : 열거 배열
    모든 열거 객체들을 배열로 리턴한다.

👉🏻 Non-Static Methods

  • name()
    리턴 타입 : String
    열거 객체가 가지고 있는 문자열을 리턴한다.
    리턴되는 문자열은 열거 타입을 정의할 때 사용한 상수 이름과 동일하다.
  • ordinal()
    리턴 타입 : int
    열거 객체의 순번을 리턴한다.(순번:0부터 시작)
  • compareTo(비교값)
    리턴 타입 : int
    주어진 매개값과 비교해서 순번 차이를 리턴한다.
    지정된 객체보다 작은 경우 음의 정수, 동일할 경우 0, 크면 양의 정수가 리턴된다.
  • equals(Object other)
    리턴 타입 : boolean
    지정된 객체가 enum 정수와 같은 경우, true 리턴

cf)
https://hbase.tistory.com/166

profile
례코드

0개의 댓글