상세 컨텐츠

본문 제목

Enum 장점

Spring/JAVA

by Chan.94 2022. 6. 20. 21:38

본문

반응형

Enum

JDK 1.5부터 추가된 Enum은 열거형이라고 불리며,서로 연관된 상수들의 집합을 의미한다.

 

기존에 상수를 정의하는 방법이였던 final static string 과 같이 문자열이나 숫자들을 나타내는 기본자료형의 값을 enum을 이용해서 같은 효과를 낼 수 있다.

 

Enum의 장점

1. 코드가 단순해지며, 가독성이 좋아져 소스관리가 쉽다.  
2. 인스턴스 생성과 상속을 방지하여 상수값의 타입안정성이 보장된다.

3. enum class를 사용해 새로운 상수들의 타입을 정의함으로 정의한 타입이외의 타입을 가진 데이터값을 컴파일시 체크한다.
4. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 알 수 있다.

 

/**
 * Enum을 통한 컴파일시 타입체크
 */
public class EnumCompileTest {

	public static void main(String[] args) {
		String sCurrency1;
		sCurrency1 = "KRW";
		sCurrency1 = "USD";
		/**
		 * sCurrency1에는 로직상 통화코드만 들어가야한다.
		 * 그러나 KR또한 String이기 때문에 JAVA는 컴파일시 해당 오류를 잡아낼 수 없다.
		 * 이 문제는 이후 프로그램에 어떠한 문제를 야기시킬지 모른다. 
		 */
		sCurrency1 = "KR";
		
		String sCurrency2;
		sCurrency2 = Cur.KRW.name();
		sCurrency2 = Cur.USD.name();
		
		System.out.println("Currency1 : " + sCurrency1);
		System.out.println("Currency2 : " + sCurrency2);
	}
	
	public enum Cur {
		KRW("KRW"),
		USD("USD")
		;

		private final String curCd;
		Cur (String curCd) {
			this.curCd = curCd;
		}

	}

}

sCurrency1에 "KR"이 들어가는 것은 JAVA문법상 오류가 아니다. (같은 String)

하지만 프로그램 로직상에서는 "KR"이 들어가게되면 이후 오류를 야기시킬 것이다.

 

enum class를 사용하면 정의되지 않은 값들은 사용되지 않을 것이기 때문에 위 문제를 컴파일시 해결 할 수 있다.

 

필드값을 추가할 때 이름을 name 으로 정하는건 피하는게 좋습니다.
Enum 클래스 자체에서 name() 이라는 메소드를 제공하기 때문에 헷갈릴 수 있습니다.

 


 

[Spring & Spring Boot/JAVA] - Enum 메소드 및 활용

반응형

관련글 더보기

댓글 영역

>