참고 : 문제를 해결하면 초기화하는 것이 좋습니다. 필자는 컴파일러가 실행 경로를 따라 가며 foo가 실제로 '그렇지 않을 수도 있음'을 암시하는 지점에서 실제로 초기화된다는 것을 알았습니다.Java 초기화시 예기치 않은 동작이 발생했습니다.
길이가 3을 넘지 않는다면, 메모리를 할당 할 필요가 없다는 것을 처음으로 가정했습니다.
이 생산에 사용되지 않습니다, 나는
다음 예를 참조하십시오 단순히 호기심 : -
List<String> foo;
int length = 5;
if (length > 3)
{
foo = new ArrayList<String>();
}
if (length > 4)
{
foo.add("bar");
}
가 왜이 표시하려면 다음을 일으키는?
초기화되지 않았을 수 있습니다, foo는 초기화되지 않고, 이에 경우가 결코 없다.가 지역 변수 foo는이 확실하게 가지를 다음
List<String> foo = null;
더 컴파일 문제가 없을 것입니다,하지만 내가 왜이 일을해야합니까 -이 : 난다면 어떻게 알고?
@down 유권자, 적어도 이유를 설명해 주시겠습니까? – chrisw