컴파일러가 지역 변수 k
에 대한 Initializer 오류를 확인하는 변수의 명확한 할당을 참조합니다. 상관없이 flag
변수의 값은 k
변수의 값이 할당됩니다 아래의 시나리오에서변수의 명확한 지정
k
needs to be initialized.
:
void flow(boolean flag) {
int k;
if (flag)
k = 3;
if (!flag)
k = 4;
System.out.println(k);
}
이 코드 조각은 컴파일 오류가 발생하지 않습니다. 여기에 컴파일 오류가 정당화 되었습니까?
컴파일러는 'else'를 사용하지 않으면 두 플래그 조건을 모두 확인했다는 것을 알기에 충분하지 않습니다. 'else'를 사용하십시오. –
더 좋은 질문은이 코드가 정당화 되었습니까? 왜 당신은 명시 적으로 부울의 양쪽을 검사하겠습니까? – shmosel
더 나은 버전은 다음과 같습니다 :'final int k = flag? 3 : 4;'5 행 대신에 한 행, 이해하기가 더 좋으며 더하기 변수'k'는 불변입니다. – vanje