programing

Java에서 Enum 켜기

bestcode 2022. 7. 12. 22:37
반응형

Java에서 Enum 켜기

Java에서 열거형을 켤 수 없는 이유는 무엇입니까?이것은 충분히 간단해 보이며 편리한 코드를 만들 수 있습니다.또한 이 질문은 다음과 같은 경우에 적용할 수 있습니다.Strings. 스위치를 켤 수 있습니다.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;
        }
    }
}

할 수 있어요.switchenums, 단, 할 수 없습니다.switchString(Java 7까지)Java에서 다형식 메서드 디스패치를 사용하는 것을 고려할 수 있습니다.enum명시적이라기보다switch주의해 주세요.enum는 Java의 오브젝트이며 단순한 기호뿐만 아니라intC/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

반응형