Это мой первый вопрос о SO, и я смущен, что еще нет похожего вопроса!
Итак, вопрос:
Почему не работает попытка использования ресурсов с переменными поля?
Или другими словами: для чего мне всегда нужна локальная переменная?
Вот пример кода:
public class FileWriteTest {
public FileWriter file;
public void workingDemo() {
try(FileWriter file = new FileWriter(new File("someFilePath")) {
// do something
} catch (IOException e) {
e.printStackTrace();
}
}
public void notWorkingDemo() {
file = null;
try(file = new FileWriter(new File("someFilePath")) {
// do something
} catch (IOException e) {
e.printStackTrace();
}
}
}
Может кто-нибудь объяснить мне, почему существует это соглашение?