Giken Dev
Published 2023. 9. 22. 03:38
[Java] Enum 이란 백엔드 데브코스
반응형

 

import java.util.function.BiFunction;

// 람다로 바꾼 사칙연산을 표현하는 enum
enum Expression {
    ADD((x, y) -> x + y),
    SUBTRACT((x, y) -> x - y),
    MULTIPLY((x, y) -> x * y),
    DIVIDE((x, y) -> {
        if (y != 0) {
            return x / y;
        } else {
            throw new ArithmeticException("Division by zero");
        }
    });

    private final BiFunction<Integer, Integer, Integer> operation;

    Expression(BiFunction<Integer, Integer, Integer> operation) {
        this.operation = operation;
    }

    int apply(int x, int y) {
        return operation.apply(x, y);
    }
}

public class Main {
    public static void main(String[] args) {
    
        // 람다로 바꾼 사칙연산을 사용하여 연산 수행
        int result = Expression.ADD.apply(5, 3);
        System.out.println("덧셈 결과: " + result);

        result = Expression.SUBTRACT.apply(5, 3);
        System.out.println("뺄셈 결과: " + result);

        result = Expression.MULTIPLY.apply(5, 3);
        System.out.println("곱셈 결과: " + result);

        result = Expression.DIVIDE.apply(6, 3);
        System.out.println("나눗셈 결과: " + result);
    }
}

 

  • enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다.
  • 장점
    1. 코드가 단순해지며, 가독성이 좋습니다. (if, else if 제거됨)
    2. 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장됩니다.
    3. enum class를 사용해 새로운 상수들의 타입을 정의함으로 정의한 타입이외의 타입을 가진 데이터값을 컴파일시 체크합니다.
    4. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 알 수 있습니다.
    5. 객체지향적으로 설계할 수 있습니다.

 

  • BiFunction type   ->  문법이 생소하다
    • 함수형 인터페이스
    • ex) BiFunction<integer, integer, integer> expression;
      • 앞의 두 개 integer 는 파라미터
      • 마지막의 integer 는 return type

 

 

java 를 공부하면서, enum 을 들어보긴 했지만 공부해본건 처음이다.
학습하고 보니 객체지향 프로그래밍에 있어서 큰 도움을 주는 녀석이라서 숙지하고 있는 것이 좋겠다.
+ 코드를 확 줄여주는 람다표현식도 숙지하기!

 

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!