본문 바로가기
강의 실습/실무 자바 개발을 위한 OOP와 핵심 디자인 패턴

Enum

by jint 2026. 1. 21.

Enum은 단순히 데이터 타입 정의뿐만 아니라, 간단한 문법으로 강력한 다형성 제공


1. Enum
Enumeration 줄임말로 "열거형"이라는 이름으로 불림

코드 설명)
Enum 클래스를 객체지향적으로 바꾼 advanced_enum 패키지의 CalculateType 클래스
1) Enum의 생성자에 열거형 상수 매개변수가 그대로 들어가게 된다.
2) 열거형 상수의 각각 매개변수가 expression 필드 초기화
3) Enum 타입들 하나하나가 클래스의 인스턴스와 마찬가지로 필드와 생성자를 가지고 있다.
4) BiFunction은 함수형 인터페이스로, 메서드를 하나의 타입처럼 다룰 수 있게 한다.
BiFunction<Integer, Integer, Integer> : 1, 2번째 Integer는 BiFunction에 들어가는 메서드의 1, 2번째 매개변수의 타입 / 3번째 Integer는 BiFunction에 들어가는 메서드의 리턴 타입
5) 람다 표현식이 생성자의 매개변수로 들어갈 때, (Integer, Integer) -> Integer 구조가 되는데, 람다 표현식은 중괄호 없이 사용시 그 자체로 return 값이 된다.
6) calculate 메서드를 통해 expression.apply() 메서드 호출시, 매개변수로 받은 값이 람다 표현식으로 들어가 실행된다.
7) Client에 if/else문 필요 없이, CalculateType은 CalculateCommand로 넘어온 매개변수 통해서 타입이 정해지고, CalculateType의 calculate() 메서드만 호출하면 연산은 CalculateType Enum 클래스 안에서 이루어 진다.

중요한 부분)
1) if/else문 같은 분기문 사라짐
if/else문은 코드를 읽기 어렵게 만든다.
2) Client는 CalculateType의 구체적인 내용에 대해 몰라도 된다. (CalculateType 자체만 알고 있으면 됨)
CalculateType의 타입들은 모두 CalculateType 안에 들어있어서, 관련된 로직들이 모두 안에 있기 때문에 응집력이 높아졌다.
여기서 CalculateType은 추상적인 존재가 된다.

이전 Client의 문제점은 타입이 늘어날 때마다 if/else 문이 늘어나고, 추가적으로 다른 값에 의해 if/else문이 결정된다고 하면 더욱 복잡해질 것이다.

관련 내용 참고 링크 : https://techblog.woowahan.com/2527/

 

Java Enum 활용기 | 우아한형제들 기술블로그

안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해

techblog.woowahan.com



참고링크 : https://school.programmers.co.kr/learn/courses/17778/17778-%EC%8B%A4%EB%AC%B4-%EC%9E%90%EB%B0%94-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-oop%EC%99%80-%ED%95%B5%EC%8B%AC-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4

 

실무 자바 개발을 위한 OOP와 핵심 디자인 패턴

@media (max-width: 991px) { .content { width: 100%; } } #landingPage { width: 100%; max-width: 848px; padding: 0 20px; letter-spacing: -0.02em; overflow-wrap: break-word; word-break: keep-all; word-wrap: break-word; } @media (max-width: 991px) {

school.programmers.co.kr

댓글