C #에 익숙하지만 Java에서 더 많은 작업을 시작합니다. Java의 열거 형은 기본적으로 C #의 열거 형과 동일하지만 실제로는 그렇지 않습니다. 처음에는 Java 열거 형에 매우 유리한 여러 조각의 데이터가 포함될 수 있음을 알게되어 기뻤습니다 ( http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ). 그러나 그 이후로 열거 형 요소에 특정 값을 쉽게 할당 할 수있는 능력과 적절한 노력없이 정수를 열거 형으로 변환하는 기능과 같이 C #에서 사소한 많은 기능이 누락되었습니다. 즉 정수 값을 일치하는 Java Enum으로 변환하십시오 .
그래서 내 질문은 이것입니다 : 많은 공개 정적 최종 필드가있는 클래스에 비해 Java 열거에 이점이 있습니까? 아니면 더 간단한 구문을 제공합니까?
편집 : 더 명확하게하겠습니다. 같은 유형 의 공개 정적 최종 필드 가 많은 클래스에 비해 Java 열거 형의 이점은 무엇입니까 ? 예를 들어 첫 번째 링크의 행성 예에서 다음과 같은 공용 상수를 사용하는 클래스보다 열거 형의 장점은 무엇입니까?
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
내가 알 수있는 한, casablanca의 대답은 이것을 충족시키는 유일한 것입니다.
S
에 대해 이야기하고 있으므로 이제 함수에 함수 등을 전달하는 것에 대해 이야기하고 있습니다. type-saftey 가 필요 합니까? 그러나 대부분의 사람들은 c 스타일 유형의 "모든 것이 void*
좋은 스타일"이라고 생각하며 버그를 막을 수 있습니다 (특히 하나 이상의 열거 형 / 문자열 매개 변수를 전달하는 경우). 또한 상수를 자체 네임 스페이스 등에 넣습니다. 이와 달리 일반 변수 만 갖는 것이 실제로 이점은 없습니다.
int
s를 사용하면 값을 전달할 수 있기 때문에 형식 안전성이 없습니다. 반면에 유형이 지정된 객체는 유형 안전성 측면에서 열거 형과 다르지 않습니다.
public static final
필드 만 언급했기 때문에 중복되지 않을 수 있습니다. 필드는 값이 입력 될 수 있으며 반드시int
s 일 필요는 없습니다 .