Java에서 Enum 켜기
Java에서 열거형을 켤 수 없는 이유는 무엇입니까?이것은 충분히 간단해 보이며 편리한 코드를 만들 수 있습니다.또한 이 질문은 다음과 같은 경우에 적용할 수 있습니다.String
s. 스위치를 켤 수 있습니다.char
, 단,String
...?
enum을 켜도 됩니다.Java 튜토리얼에서 게시된 예제입니다.
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
}
할 수 있어요.switch
에enum
s, 단, 할 수 없습니다.switch
에String
(Java 7까지)Java에서 다형식 메서드 디스패치를 사용하는 것을 고려할 수 있습니다.enum
명시적이라기보다switch
주의해 주세요.enum
는 Java의 오브젝트이며 단순한 기호뿐만 아니라int
C/C++에 있는 것 같습니다.Method를 사용할 수 있습니다.enum
를 입력해 주세요.switch
메서드를 호출하기만 하면 됩니다.코드 한 줄: 완료!
enum MyEnum {
SOME_ENUM_CONSTANT {
@Override
public void method() {
System.out.println("first enum constant behavior!");
}
},
ANOTHER_ENUM_CONSTANT {
@Override
public void method() {
System.out.println("second enum constant behavior!");
}
}; // note the semi-colon after the final constant, not just a comma!
public abstract void method(); // could also be in an interface that MyEnum implements
}
void aMethodSomewhere(final MyEnum e) {
doSomeStuff();
e.method(); // here is where the switch would be, now it's one line of code!
doSomeOtherStuff();
}
첫 번째로 스위치 온을 할 수 있습니다.enum
자바어.안 된다고 말하려고 했겠지만 할 수 있어요. char
에는 값의 범위가 정해져 있기 때문에 비교하기 쉽습니다.끈은 무엇이든 될 수 있어요.
A switch
스테이트먼트는 보통 기본 컴파일에서 점프 테이블(점프 테이블)로 구현됩니다.이는 한정된 값의 집합에서만 가능합니다.C#은 문자열을 켤 수 있지만 점프 테이블을 사용할 수 없기 때문에 성능이 저하됩니다.
Java 7 이후에는 동일한 특성을 가진 스위치를 지원합니다.
enum MyEnum { CONST_ONE, CONST_TWO }
class Test {
public static void main(String[] args) {
MyEnum e = MyEnum.CONST_ONE;
switch (e) {
case CONST_ONE: System.out.println(1); break;
case CONST_TWO: System.out.println(2); break;
}
}
}
문자열용 스위치는 Java 7에서 구현됩니다.
스위치 케이스에서 enum을 잘못 사용하고 있을 수 있습니다.위의 CoolBeans의 예와 비교하여다음 작업을 수행할 수 있습니다.
switch(day) {
case Day.MONDAY:
// Something..
break;
case Day.FRIDAY:
// Something friday
break;
}
EnumType 대신 실제 열거 값을 사용해야 합니다.EnumValue(EnumValue
하지만 이클립스는 이 실수를 지적하고 있다.
사실 Java에서 strings를 사용하여 switch 문을 사용할 수 있습니다.유감스럽게도 이것은 Java 7의 새로운 기능으로 대부분의 사람들은 Java 7을 아직 사용하지 않습니다.왜냐하면 이것은 매우 새로운 것이기 때문입니다.
언급URL : https://stackoverflow.com/questions/6391777/switch-on-enum-in-java
'programing' 카테고리의 다른 글
vuejs 2를 몇 개의 html 페이지에서 사용하는 방법 (typescript 및 ASP)넷코어 (0) | 2022.07.12 |
---|---|
선택 태그 내의 화살표 아이콘을 글꼴이 큰 아이콘으로 변경하려면 어떻게 해야 합니까?Vue-Cli를 사용하고 있습니다.나는 main.js에서 폰타썸을 수입했다. (0) | 2022.07.12 |
Vuex를 사용하여 항목이 개체 배열의 일부인 경우 어레이에서 항목을 제거하려면 어떻게 해야 합니까? (0) | 2022.07.12 |
클릭 시 v-date-picker v-menu를 열고 v-text-field에 초점을 맞춥니다. (0) | 2022.07.12 |
정수 오버플로로 인해 메모리 파손으로 정의되지 않은 동작이 발생합니까? (0) | 2022.07.12 |