PHpullh
학습 라이브러리/Java/열거형에 메서드 추가

JAVA · 객체지향

열거형에 메서드 추가

열거형 상수별로 다른 동작을 정의하는 패턴입니다.

객체지향중급enum메서드abstract전략패턴

핵심 설명

열거형 상수별로 다른 동작을 정의하는 패턴입니다.

Java code

enum Operation {
    ADD("+") {
        @Override
        public double apply(double a, double b) { return a + b; }
    },
    SUB("-") {
        @Override
        public double apply(double a, double b) { return a - b; }
    },
    MUL("*") {
        @Override
        public double apply(double a, double b) { return a * b; }
    },
    DIV("/") {
        @Override
        public double apply(double a, double b) {
            if (b == 0) throw new ArithmeticException("0 나누기");
            return a / b;
        }
    };

    private final String symbol;
    Operation(String symbol) { this.symbol = symbol; }

    public abstract double apply(double a, double b);

    @Override
    public String toString() { return symbol; }
}

class Main {
    public static void main(String[] args) {
        for (Operation op : Operation.values()) {
            System.out.printf("10 %s 3 = %.1f%n",
                op, op.apply(10, 3));
        }
    }
}

학습 팁

열거형에 abstract 메서드를 선언하면 모든 상수가 반드시 구현해야 합니다. 새 상수 추가 시 구현 누락을 방지합니다.

주의할 점

열거형 상수 본문에서 다른 상수를 참조하면 초기화 순서 문제가 발생할 수 있습니다. 정적 필드로 분리하세요.

자주 묻는 질문

열거형에 메서드 추가란 무엇인가요?

열거형 상수별로 다른 동작을 정의하는 패턴입니다.

열거형에 메서드 추가 학습 시 주의할 점은 무엇인가요?

열거형 상수 본문에서 다른 상수를 참조하면 초기화 순서 문제가 발생할 수 있습니다. 정적 필드로 분리하세요.