본문 바로가기
🖥Web/🔥Java

[Java] java Enum 적용하기, java Enum 왜 써야할까?

by 후눅스 2021. 1. 15.
반응형

 

 

Enum의 기본적인 장점들

  • 문자 열과 비교해 IDE의 적극적인 지원을 받을 수 있습니다.
    • 자동완성, 오타검증, 텍스트 리팩토링 등등
  • 허용 가능한 값들을 제한 할 수 있습니다.
  • 리펙토링 시 변경 범위가 최소화 됩니다.
    • 내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없습니다.

 

 

Enum을 사용하는 이유는 지저분한 코드들을 모두 지우고(예를들면 if(any || any || ... ) 등등의 긴 문장) 한 곳에서(Enum) 모든 정리를 끝내고 값을 내주는것, 확실하게 명시된것만 사용할 수 있도록 하는것이 유용한것같습니다. 

값이 변하는것들을 사용 할 용도는 절대 아닌것으로 보이고 setter는 사용하지않고 getter만 사용하는것이 바람직해보입니다.

 

 

Enum을 사용해보도록 하겠습니다.

 

 

생성시에는 Enum을 선택해주시면 됩니다.

 

 

 

 

 

ErrorCode.java

package com.example.base.arearch;

import lombok.Getter;

public enum ErrorCode {
	BAD_REQUEST(400, "A1", "Bad request"),
	UNAUTHORIZED(401, "A2", "Unauthorized"),
	NOT_FOUND(404, "A3", "Not found"),
	INTERNAL_SERVER_ERROR(500, "A4", "internal server error");
	
	/* STATUS */
	@Getter
	private int status;
	/* CODE */
	@Getter
	private final String code;
	/* MESSAGE */
	@Getter
	private final String message;
	
	private ErrorCode(int status, String code, String message) {
		this.status = status;
		this.code = code;
		this.message = message;
	}

	public static void main(String[] args) {
		System.out.println("========================================");
		ErrorCode errorCode = ErrorCode.BAD_REQUEST;
		System.out.println("ErrorCode errorCode = ErrorCode.BAD_REQUEST;");
		System.out.println("errorCode.getStatus() : " + errorCode.getStatus());
		System.out.println("errorCode.getMessage() : " + errorCode.getMessage());
		System.out.println("errorCode.getCode() : " + errorCode.getCode());
		System.out.println("========================================");	
		System.out.println();
		System.out.println("========================================");
		errorCode = ErrorCode.NOT_FOUND;
		System.out.println("errorCode = ErrorCode.NOT_FOUND;");
		System.out.println("errorCode.getStatus() : " + errorCode.getStatus());
		System.out.println("errorCode.getMessage() : " + errorCode.getMessage());
		System.out.println("errorCode.getCode() : " + errorCode.getCode());
		System.out.println("========================================");
	}	
}

 

실행결과입니다.

 

 

ManagementBank.java

package com.example.base.arearch;

import java.util.List;

import java.util.Arrays;

public enum ManagementBank {

	AREA1_BANK(43, Arrays.asList("KB", "NH")),
	AREA2_BANK(55, Arrays.asList("기업", "신한")),
	AREA3_BANK(313, Arrays.asList("하나", "우리")),;

	private int managementCode;
	private List<String> bankList;

	private ManagementBank(int managementCode, List<String> bankList) {
		this.managementCode = managementCode;
		this.bankList = bankList;
	}

	public static ManagementBank findByBankName(String bankName) {
		return Arrays.stream(ManagementBank.values())
				.filter(managementBank -> managementBank.searchBank(bankName))
				.findAny()
				.orElse(null);
	}

	public boolean searchBank(String bankName) {
		return bankList.stream().anyMatch(bank -> bank.equals(bankName));
	}

	public static void main(String[] args) {
		System.out.println("==================================");
		System.out.println("findByBankName(\"KB\") : " + findByBankName("KB"));
		System.out.println("==================================");
		System.out.println();
		System.out.println("==================================");
		System.out.println("findByBankName(\"하나\") : " + findByBankName("하나"));
		System.out.println("==================================");
		System.out.println();
		System.out.println("==================================");
		System.out.println("findByBankName(\"하\") : " + findByBankName("하"));
		System.out.println("==================================");
	}
}

 

 

실행 결과입니다.

 

 

 

ReferenceLink : 

https://woowabros.github.io/tools/2017/07/10/java-enum-uses.html

 

https://itmining.tistory.com/149

 

반응형