[Java] Enum 순회 - values()

해니·2025년 6월 4일
0

Java

목록 보기
31/34
post-thumbnail

🥸 Enum 으로 관리되고 있는 코드 값들을 조회하는 API가 있었고 , 새로운 유형의 코드 값을 추가하는 과정에서 리팩토링을 진행해 보았다 .!


🖥️ AS - IS Code 🖥️


List<CodeResult> resultList = new ArrayList<>();

CodeResult result = new CodeResult();
result.setReasonCd(RequestReasonType.SEARCH_OTHER_CS.getCode());
result.setReasonName(RequestReasonType.SEARCH_OTHER_CS.getName());

/* 생략 */
resultList.add(result);
  • 리턴할 result 객체를 생성하고, 해당 사유 코드와 이름을 Enum에서 get한 후 result 객체에 set한다.
  • Enum에 새로운 값이 추가되는 경우 매번 result 객체에 해당 값을 set해야 하고 , 특정 Enum 값들만 set 해야 하는 구조라 유지 보수가 어렵다고 판단했다.



🧩 TO - BE Code 🧩

private static final List<RequestReasonType> TARGET_REQUEST_REASON_TYPE = List.of(
            RequestReasonType.SEARCH_OTHER_CS
            , RequestReasonType.SEARCH_OTHER_EVENT
            , RequestReasonType.SEARCH_ERROR_TEST
            , RequestReasonType.SEARCH_OTHER_ETC
    );


List<CodeResult> resultList = Arrays.stream(RequestReasonType.values())
                .filter(TARGET_REQUEST_REASON_TYPE::contains)
                .collect(Collectors.toList());
  • set 해야할 값들을 상수로 선언해서 관리한다.
  • Enumvalues() 메서드를 활용해서 Enum 요소들을 순서대로 리턴 받은 후, Streamfilter()를 사용하여 필요한 값들만 걸러낸다.






출처

[Java] Enum의 사용법

profile
💻 ⚾️ 🐻

0개의 댓글