[Java] Constant expression required

8027 단어 JAVA자바
switch-case 구문 에서 케이스 후"Constant expression required"–상수 표현 식 이 필요 합 니 다.
GradeEnum.java
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

/**
 * @author lizh
 * @date 2020/6/29
 */
@Data
@AllArgsConstructor
@Getter
public enum GradeEnum {
     
    GRADE_ONE(1, "     "),
    GRADE_TWO(2, "     "),
    GRADE_THREE(3, "     "),
    GRADE_FOUR(4, "     "),
    ;

    private Integer code;
    private String desc;
}

SwitchCaseTest.java
/**
 * @author lizh
 * @date 2020/6/29
 */
public class SwitchCaseTest {
     
    public void deal(Integer grade) {
     
        switch (grade) {
     
            case GradeEnum.GRADE_ONE.getCode(): //     :Constant expression required
                // do something
                break;
            default:
                // do something
                break;
        }
    }
}

case 구문 에 대해 서 는 컴 파일 기간 에 값 을 정 해 야 합 니 다.여기 GradeEnum.GRADEONE.getCode()는 실행 기간 에 만 값 을 정할 수 있 습 니 다.
수정 방안:케이스 후 매 거 진 상수 사용.매 거 진 클래스 에 추가 하 는 방법:
public enum GradeEnum {
     
    //       

    public static GradeEnum getGradeEnumByCode(Integer code) {
     
        for (GradeEnum gradeEnum : GradeEnum.values()) {
     
            if (gradeEnum.getCode().equals(code)) {
     
                return gradeEnum;
            }
        }
        return null;
    }
}

switch-case 문 구 는 다음 과 같이 수정 되 었 습 니 다.
    public void deal(Integer grade) {
     
        GradeEnum gradeEnum = GradeEnum.getGradeEnumByCode(grade);
        if (gradeEnum == null) {
     
            // do something
        } else {
     
            switch (gradeEnum) {
     
                case GRADE_ONE:
                    // do something
                    break;
                default:
                    // do something
                    break;
            }
        }
    }

좋은 웹페이지 즐겨찾기