본문 바로가기

Java

Enum (열거형)

Enum (열거형)

  • 관련성을 가진 상수들의 집합
  • 상수의 클래스형 선언

① Enum을 사용하는 이유

 

  • 허용 가능한 값을 제한할 수 있어 컴파일 시 예외 처리가 가능하다.
  • 수정 시 변경 범위가 최소화된다.
  • 코드의 단순성 및 가독성이 좋아진다.
  • 인스턴스의 생성과 상속을 방지하여 상수값의 안정성이 보장된다.

② Enum 활용

 

[Example 01]

 

public enum Month {

    JANUARY("1", "Winter"),
    MARCH("3", "Spring"),
    MAY("5", "Spring"),
    JULY("7", "Summer");

    private String monthNumber;
    private String season;

    Month(String monthNumber, String season) {
        this.monthNumber = monthNumber;
        this.season = season;
    }

    public String getMonthNumber() {
        return monthNumber;
    }

    public String getSeason() {
        return season;
    }

}

 

public class Enum {

    public static void main(String[] args) {

        Month month = Month.JANUARY;

        System.out.println(month.getMonthNumber());
        System.out.println(month.getSeason());

        for (Month value : Month.values()) {
            System.out.print(value + " ");
        }

        System.out.println(Month.JANUARY.ordinal());
        System.out.println(Month.MAY.ordinal());

        System.out.println(Month.valueOf("JULY"));

    }

}

 

[Example 01]

 

public enum Calculator {

    ADD("더하기", (x, y) -> Double.valueOf(x + y)),
    SUB("빼기", (x, y) -> Double.valueOf(x - y)),
    MUL("곱하기", (x, y) -> Double.valueOf(x * y)),
    DIV("나누기", (x, y) -> Double.valueOf(x / y));

    private String calcName;
    private BiFunction<Integer, Integer, Double> expression;

    Calculator(String calcName, BiFunction<Integer, Integer, Double> expression) {
        this.calcName = calcName;
        this.expression = expression;
    }

    public double calculate(int x, int y) {
        return expression.apply(x, y);
    }

    public String getCalcName() {
        return calcName;
    }

}

 

public class Enum {

    public static void main(String[] args) {

        CalculatorLambda calculatorLambda = CalculatorLambda.ADD;
        System.out.println(calculatorLambda.getCalcName());
        System.out.println(calculatorLambda.calculate(1, 5));

    }

}

 

▷ 출처

https://devjanghwa.tistory.com/181

https://velog.io/@red-sprout/Java-enum%EC%9D%80-%EC%99%9C-%EC%93%B0%EB%8A%94%EA%B1%B8%EA%B9%8C-feat.-%EC%9A%B0%EC%95%84%ED%95%9C%ED%98%95%EC%A0%9C%EB%93%A4-%EA%B8%B0%EC%88%A0%EB%B8%94%EB%A1%9C%EA%B7%B8

 

728x90

'Java' 카테고리의 다른 글

추상 클래스 (Abstract Class)  (0) 2024.07.01
Serialization (직렬화)  (0) 2024.06.28
Generics  (0) 2024.06.25
JDBC (Java DataBase Connectivity)  (0) 2024.06.20
Java Collection Framework (2)  (0) 2024.06.18