[Java] Enum 기본 활용

3Beom's 개발 블로그·2022년 11월 8일

본 글은 우아한 테크코스 프리코스 1주차 미션 중 공부한 내용을 기록한 것이다.
-> 우아한 테크코스 프리코스 1주차 미션 java-onboarding
-> 필자가 제출한 코드
-> 1주차 미션 회고


Enum 기본 활용

<열거 상수 생성>

  • Enum은 열거 상수를 모아둘 수 있다.
  • 선언된 열거 상수 각각은 Java 내부적으로 Enum 클래스를 상속받는 public static final 객체로 설정된다.
    • 즉, 각각의 상수는 클래스가 로드되는 시점부터(static) final 객체로 생성된다.
  • 가장 기본적인 생성 방법은 다음과 같다.
public enum UnitsOfBill {
	FIFTY_THOUSAND,
	TEN_THOUSAND,
	FIVE_THOUSAND,
	ONE_THOUSAND,
	FIVE_HUNDRED,
	ONE_HUNDRED,
	FIFTY,
	TEN,
	ONE;
}
  • 위와 같이 상수들을 모아둘 수 있으며, 아래와 같이 참조를 통해 활용될 수 있다.
int money = 5000;
if (money == 5000) {
	return UnitsOfBill.FIFTY_THOUSAND;
}
  • 각각의 상수에 특정 값을 저장해 둘 수도 있다.
  • Enum의 열거 상수들은 앞서 언급한대로 각각의 객체가 생성되는 것이므로, 특정 값을 저장하기 위해서는 다음 과정이 필요하다.
    • 멤버 상수 선언
    • 멤버 상수를 초기화 할 생성자 선언
    • 멤버 상수를 가져올 수 있도록 Getter 생성
public enum UnitsOfBill {
	FIFTY_THOUSAND(50000),
	TEN_THOUSAND(10000),
	FIVE_THOUSAND(5000),
	ONE_THOUSAND(1000),
	FIVE_HUNDRED(500),
	ONE_HUNDRED(100),
	FIFTY(50),
	TEN(10),
	ONE(1);
  
  private final int amountOfMoney;

	UnitsOfBill(int money){
		this.amountOfMoney = money;
	}

	public int getAmountOfMoney(){
		return this.amountOfMoney;
	}
}
  • 각각의 열거 상수는 '객체'이고, 설정한 멤버 변수는 수정할 수 없는 '상수' 이다.

  • 즉, 생성자를 통해서만 초기화 할 수 있으므로 생성자를 만들어 주어야 한다.

    UnitsOfBill(int money){...}
  • 해당 생성자는 기본적으로 private 이기 때문에 외부에서 new 연산으로 생성할 수 없다.

  • 멤버 변수는 private으로 설정되므로, 이를 외부에서 가져다 쓸 수 있도록 Getter를 만들어 주어야 한다.

    public int getAmountOfMoney() {...}

<Enum 클래스 메소드>

  • 열거 상수들(열거 객체들)은 모두 java.lang.Enum 클래스를 상속받기 때문에 name(), ordinal(), valueOf(String name), values() 메소드를 사용할 수 있다.

  • name() : 해당 열거 상수의 이름을 반환한다.

  • ordinal() : 해당 열거 상수의 인덱스를 반환한다. 열거 상수들이 나열된 순서대로 0번 인덱스부터 매겨진다.

  • valueOf(String name) : 전달된 문자열과 일치하는 열거 상수(열거 객체)를 반환한다.

  • values() : 열거 상수들을 저장한 배열을 생성하여 반환한다.

    • 본 문제에서와 같이 상수들을 탐색하며 작업이 수행되어야 할 때 활용될 수 있다.
profile
경험과 기록으로 성장하기

0개의 댓글