Объявил объект в цикле WHILE. Не могу вызвать метод объекта за пределами цикла WHILE
class Contact {
String name;
void call() {
System.out.println("take it");
}
}
class ContactTestDrive {
public static void main(String[] args){
int x = 8;
Contact refc;
while (x < 10) {
refc = new Contact();
x = x + 1;
refc.call();
}
refc.call();
}
}
При компиляции выдает данную ошибку:
//ContactTestDrive.java:13: error: variable refc might not have been initialized
refc.call();
^
Не понимаю в чем проблема так как тип переменной refc объявлен, соответственно указанно имя переменной. В цикле создан объект соответствующего типа. При переносе вызова метода объекта в цикл, все работает. За пределами выдает указанную выше ошибку. Смысл самого кода не важен, интересует причина данной ошибки.
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Причина ошибки в том, что компилятор не aнализирует условие цикла. Он видит цикл с условием. Выполнится условие или нет - выяснится во время выполнения. С точки зрения компилятора возможна ситуация, когда выполнение в цикл не зайдет, и переменная refc останется неназначенной.