코딩을 진행하던 중 멀쩡한 switch-case 문에서 에러가 발생했다.
코드 :
switch(requestCode){
case NEW_ACT:
break;
case LAST_ACT:
default:
break;
}
에러 : case expressions must be constant expressions
수정을 하려 검색을 해 보니, switch-case 문을 if-else 문으로 변경하여 수정했다는 글들이 보인다. 엥? if-else 문보다 switch-case 문을 쓰고 싶어서 사용한 것인데, 이걸 꼭 수정해야 해? 따라서 다른 방법을 찾아보기로 한다. 에러 문장을 다시 들여다 보자. 해석하자면, case 조건(expression)은 반드시(must) 상수(constant) 여야 한단다. 오, 다시 한 번 보니 case 문의 조건 정의에 final 이 없다. final을 붙여보니 문제가 수정된다.
수정전 :
private int NEW_ACT = 1;
private int LAST_ACT = NEW_ACT + 1;
수정후 :
private final int NEW_ACT = 1;
private final int LAST_ACT = NEW_ACT + 1;
아는 바와 같이, final은 해당 변수를 상수처럼 사용할 수 있도록 돕는다. 즉, 초기화 한 값으로 해당 변수를 유지 시켜준다는 뜻이다. 따라서 define 값들은 항상 final을 붙여주는 습관을 붙여야겠다.
그런데, 그럼 변수를 사용하는 조건으로는 switch 문을 사용할 수 없다는 거네? 아니 왜? 물론 대신 if-else 문을 사용해도 상관은 없지만, 굳이 이런 까탈스러움이 왜 필요한 건지? 라는 의문은 나중에 해결하자. 지금은 일단 너무 깊이 파지 말고 후딱후딱 코딩이나 하란 말이다!! 라는 결론.
'관계, Networking 그리고 Programming' 카테고리의 다른 글
Dialog와 DialogFragment (4) | 2013.06.10 |
---|---|
공용 상수의 사용? (0) | 2013.06.05 |
Android developer 사이트를 볼 때 주의점 : MUST를 잘 검색하자. (0) | 2013.05.27 |
TextAppearance.Medium의 실제 text 사이즈 (0) | 2013.05.26 |
Bitmap을 파일로 저장하기 (0) | 2012.02.03 |