2014-12-23 2 views
0
public class SwitchTest { 

public static void main(String[] args) { 
    Integer i = new Integer(2) + new Integer(2); 

    switch(i){ 
     case 4: System.out.println("foo"); break; 
     default: System.out.println("default"); break; 
    } 
    } 
} 

정수 i는 final으로 표시되지 않습니다. (저는 자바의 초보자입니다.)비 최종 변수는 어떻게 스위치 상수가 될 수 있습니까?

+0

여기서 i는 "스위치 상수"가 아니며 켜져있는 변수입니다. 그것은'if'와 마찬가지로 현재 값을 바꿀 것입니다. – lmm

+0

스위치 매개 변수가 final 일 필요는 없습니다. 귀하의 환경에서 어떤 것이 올바르지 않습니다. –

+1

'switch (new Random(). nextInt())'를 아무런 문제없이 쓸 수 있습니다. 그러나'case new'는 * 컴파일 타임 상수 *가 필요하기 때문에'case Random(). nextInt() :'를 쓸 수 없습니다. – Tom

답변

3

피연산자와 함께 case 라벨을 혼동스럽게 생각합니다.

비정규 값으로 switch을 입력해도 아무런 문제가 없습니다. 실제로, 그것없이, switch는 무용 할 것입니다.

+0

고마워. 내가 얼마나 바보인지 나는 깨닫고 .. – Codistan

관련 문제