IT/Android

[Android] switch error : constant expression required

토마토조아 2018. 12. 4. 14:34
728x90

안드로이드 뿐만 아니라 자바로 프로그래밍 할 때 switch 문을 많이 사용하게 된다.

그 때 간혹 "constant expression required" 라는 에러를 마주치는 경우가 있다. 처음 겪는 개발자라면 뭐가 문제인지 몰라서 삽질을 하는 경우가 발생한다.

에러가 발생하는 원인은 case에서 사용하는 상수의 경우 반드시 final 로 선언이 되어야 한다는 것이다.

아래의 예제에서 RC_SIGN_IN에 final 이 붙어 있지 않으면 위의 에러가 반드시 발생하게 된다.

상수로 처리되는 구문의 경우는 무조건 final을 붙여서 변수 값이 변동되지 않도록 한다.

public static final int RC_SIGN_IN = 9001;
switch (requestCode) {
case RC_SIGN_IN:
// The Task returned from this call is always completed, no need to attach
// a listener.
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
break;

case RC_SIGN_OUT:

break; }


728x90