2010-03-14 5 views
2

문자열에 대한 상수 사용을 enum으로 전환했습니다. 여러 번 열거 형의 String 표현이 필요합니다 (로깅, String이 필요한 API로 전달하는 등).문자열에 대한 Java enums vs 상수

String 상수를 사용하면 String 값을 전달할 수 있지만 열거 형을 사용하면 toString()을 호출해야합니다. enum 변수를 제공 할 때 String 값을 "기본값"으로 설정할 수 있습니까?

많은 포스터에서 언급했듯이 String 표현이 자주 필요한 경우 열거 형을 사용해서는 안됩니다.

+1

왜 네 번째 코드 블록의 문자열 변수에 enum 값을 할당하고 있습니까? – CesarGon

+0

유스 케이스 란 무엇입니까? 왜 이런 짓을하는? – kiwicptn

+0

이 게시물을 좀 더 명료하게 업데이트했습니다! –

답변

9

enum을 완전히 채택하고 String 표현을 처음 사용하지 않아야합니다. toString()을 사용하여 메시지, 로그 등을 생성하고 내부적으로는 enum으로 작업하고 싶습니다. Map, Set 등의 작업은 enum 유형에서 수행해야합니다. 적절한 직렬화, 싱글 톤 패턴 및 enum 유형이 가지는 모든 것을 보장합니다. 당신의 조각에서

는 :

Object o = map.get(Options.OPTION_1); 
//This won't work as intended if the Map key is a String 

컴파일시 에러 제외하고, 당신은 정말지도 키도 처음에 형 String이어야 여부를 질문해야한다. 사용하는 방식에 따라 Map<Options, Something>이어야합니다.

7

Java에서 Enum을 사용하는 데는 많은 이유가 있습니다. 그러나 String 만 있으면됩니다.

예를 들어, 특정 엔터티 집합을 나타내며 다른 엔터티 유형 (예 : Strings)과 유형이 같지 않으려면 Enum이 적합합니다. Moreso를 사용하여 함수를 호출하고 특정 인스턴스를 기반으로 차별화 할 경우

반면에 String 값에만 관심이 있다면 String 상수에는 아무런 문제가 없습니다.

게시 한 내용에서 유스 케이스가 무엇인지 알 수 없습니다. Enum을 사용해야하는 이유가 있습니까?