[Java] Enum을 예제로 알아보자.

2023. 9. 22. 03:38·Programming Language/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);
    }
}

 

 

 장점

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

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Programming Language > Java' 카테고리의 다른 글

[Java] Object 클래스와 주요 메서드 - equals(), hashCode(), toString()  (0) 2023.09.22
[Java] Checked & Unchecked exception 의 차이에 대하여  (0) 2023.09.22
[Java] 추상클래스(abstract class)와 인터페이스(interface)의 차이점과 예제  (0) 2023.09.22
[Java] 객체지향 프로그래밍으로 개발해야하는 이유.  (0) 2023.09.22
[Java] String 타입과 String Class의 비교 / == 그리고 .equals()  (0) 2022.03.19
'Programming Language/Java' 카테고리의 다른 글
  • [Java] Object 클래스와 주요 메서드 - equals(), hashCode(), toString()
  • [Java] Checked & Unchecked exception 의 차이에 대하여
  • [Java] 추상클래스(abstract class)와 인터페이스(interface)의 차이점과 예제
  • [Java] 객체지향 프로그래밍으로 개발해야하는 이유.
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    2588
    윤년
    9498
    SQL
    DB
    C
    프로그래머스
    백준
    1330
    평년
    SQL고득점키트
    2753
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[Java] Enum을 예제로 알아보자.
상단으로

티스토리툴바