[Java] Enum 멤버변수로 Enum 값 찾기

dev asdf·2023년 11월 12일
0

Java

목록 보기
1/3

VER: Java8

enum 에 멤버변수를 추가해서 사용할때 멤버변수 값으로 enum 값을 찾고 싶었다.


예를 들어 다음과 같은 enum이 있다고 해보자.

    public enum Food{
        RAMYUN(0,5000),
        UDON(1,6000),
        KIMBAB(2,3500),
        TOPOKKI(3,4000),
        PORK_CUTLET(4,8000);
    
        private final int code;
        private final int price;


        Food(int code, int price) {
            this.code = code;
            this.price = price;
        }

        public int getCode() {
            return code;
        }

        public int getPrice(){
             return price;
        }
    }

사용자가 선택한 메뉴를 숫자로 주고받기로 약속했다면 메뉴를 선택할 때 0,1,2 ... 와 같은 값을 받을 것이다.

이렇게 받은 값을 토대로 해당 메뉴의 가격을 알아내고 싶다면?

개인적으로 값을 비교할땐 enum을 선호하기에 자바에선 이런 경우에 어떻게 할 수 있을지 궁금했다.

enum 내부에서 switch문을 노가다 하는 것 또한 방법이겠지만, enum의 값이 많아질수록 고통스러워 질 것이다.

stream 과 values() 를 사용하면 손쉽게 멤버변수로 원하는 enum 값을 찾을 수 있다.

 public static Food of(final int code){
		return Arrays.stream(values())
        		.filter(val -> code == val.code)
                .findFirst()
                .orElse(null);
 }

메뉴에 대한 가격은 다음처럼 얻을 수 있다.

 public static int getChosenFoodPrice(int code){
 		Food food = Food.of(code);
    	return food.getPrice();
  }

메뉴에 해당하는 가격을 알아내기 위해 조건을 비교할 필요가 없어졌다.

public static void main(String[] args) {
        System.out.println(Food.getChosenFoodPrice(2) + "원");
 }

0개의 댓글

관련 채용 정보