JAVA

Enum 클래스

Lahezy 2023. 2. 28.
728x90

열거형 : 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유리하다.

1️⃣ 특징

  • 열거형의 상수간의 비교에는 "=="이 사용가능하다 (빠른 성능을 제공한다)
  • <,>와 같은 비교연산자는 사용이 불가능 하지만 compareTo()는 이용이 가능하다
  • 열거형 상수 하나하나각 각 클래스의 객체이다

 

2️⃣ 사용법

  • 정의 : enum 열거체이름 { 상수이름, 상수이름,... }
  • 사용법 :  열거체 이름. 상수이름 

 

3️⃣ enum 메서드

  • ordinal() : 열거체에서 정의된 순서를 반환한다.(0부터 시작한다)
  • valuOf(상수) : 상수 반환
  • values() : 열거체의 모든 상수를 저장한 배열을 반환
import java.util.Arrays;

public enum Prize {
    first(6, false, 2_000_000_000),
    second(5, true, 30_000_000),
    third(5, false, 1_500_000),
    fourth(4, false, 50_000),
    fifth(3, false, 5_000),
    etc(0, false, 0); //세미콜론 찍어야 한다.

    private final int matchPoint;
    private final boolean bonusMatchPoint;
    private final int money;

    //생성자는 제어자가 묵시적으로 private로 선언한다.
    Prize(int matchPoint, boolean bonusMatchPoint, int money) { 
        this.matchPoint = matchPoint;
        this.bonusMatchPoint = bonusMatchPoint;
        this.money = money;
    }

    //로또의 당첨 번호와 보너스 당첨번호에 따라 당첨 금액을 리턴한다. 
    public static Prize findPrize(int matchPoint, boolean bonusMatchPoint) {
        return Arrays.stream(values())
                .filter(Prize -> Prize.matchPoint == matchPoint)
                .filter(Prize -> Prize.bonusMatchPoint == bonusMatchPoint)
                .findAny()
                .orElse(etc); 
    }

    public int getMatchPoint() {
        return matchPoint;
    }

    public boolean isBonusMatchPoint() {
        return bonusMatchPoint;
    }

    public int getMoney() {
        return money;
    }
}

✨참고✨

https://mine-it-record.tistory.com/133

http://www.tcpschool.com/java/java_api_enum

자바의 정석 3판 

 

728x90

'JAVA' 카테고리의 다른 글

Stream 스트림  (0) 2023.03.19
람다식(Lambda Expression)  (1) 2023.03.08
ArrayList와 LinkedList  (0) 2023.02.24
오버로딩과 오버라이딩  (0) 2023.02.22
Array 배열 복사의 4가지 방법  (0) 2023.02.10

댓글