[JAVA] Enum 사용하기

Jae Eon·2021년 5월 9일
0

자바 공부

목록 보기
1/2
post-thumbnail

들어가며

Enum의 정의 및 Enum을 언제 사용하는지, 사용법에 대한 내용을 정리하기 위한 포스트입니다.

🍊 Enum 클래스란?

관련이 있는 상수들의 집합으로, 클래스를 상수처럼 사용할 수 있다.
enum 클래스로 구현할 경우 상수 값과 같이 유일하게 하나의 인스턴스가 생성되어 사용된다.

🍎 Enum을 언제 쓸까?

개발중인 도메인에서 공통적으로 사용하는 상수들이 있고 각 클래스 마다 중복 되어 사용 될때,
서로 관련 있는 상수 값들을 모아 enum으로 구현할 경우 유용하다.
ex) 계산기의 사칙연산 기호(+, -, *), 배달 서비스의 현재 주문 상태(결제 완료,결제 대기)

🍈 Enum의 특징

  • 상태와 행위를 한곳에서 관리
    ex) Enum으로 선언한 상수에 따라 다른 결과를 리턴 할 수있다.(PULS 상수는 더하는 기능,MINUS 상수는 빼는기능)
  • Enum 클래스를 구현하는 경우 상수 값과 같이 유일하게 하나의 인스턴스가 생성되어 사용된다.
  • 클래스와 같은 문법 체계를 따른다.
  • 상속을 지원하지 않는다.

🍑 Enum의 내부 Api 메서드

  • values()
    Enum의 모든 인스턴스들을 배열에 담아 리턴한다.
    (보통 순회하며 인스턴스를 비교할때 유용하다.)

  • valueOf()
    Enum의 인스턴스중 파라미터로 넘어온 값과 동일한 값이 있는지 비교하여 인스턴스를 반환한다.
    ex) MathSymbol.valueOf(PLUS) // <- PLUS를 찾고 있으면 PLUS 인스턴스 반환

  • ordinal()
    Enum 클래스 내부에 있는 상수들의 Index 를 리턴하는 메소드이다.
    (Index는 선언한 순서에 따라 결정된다. 아래 예시코드에서 PLUS = 0, DIVIDE = 2)

🍋 Enum 사용 (예시 1)

  • PLUS("+"), MINUS("-"), DIVIDE("/"), MULTIPLE("*") 총 4개의 상수가 선언되었으며
    상수의 값으로 기호(+, -, *, /)를 가진다.

  • Enum도 클래스이기 때문에 생성자를 선언 해야한다

	MathSymbol(String mathSymbol) {
            this.mathSymbol = mathSymbol;
    }
  • findBalidatedSymbol() 은 Enum에서 파라미터 operator와 동일한 상수를 찾아 반환하는 코드이다.

  • operate() 는 Enum의 상수에 따라 각기 다른 계산 결과를 반환한다.
    ex) findBalidatedSymbol("+").operate(1,2) 를 실행하면 3이 반환될 것이다.


🥝 Abstract 메서드를 사용한 Enum (예시 2)

  • Abstract 메서드를 사용하면 상수들을 선언하는 부분에서 각각의 상수가 각기 다른 상태(행위)를 가질 수 있게된다.
    예시1의 코드에서 operate는 조건절을 진행하며 각기 다른 계산 식을 리턴하는 형태였다면
    에시2operate는 각각의 상수에서 오버라이딩 되어 각각 다른 식을 리턴하고 있다.
profile
🖋정리를 안하면 잊어버린다.👣한 발자국씩 가보자!

0개의 댓글