Это мой самый первый вопрос о 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();
}
}
}
Может ли кто-нибудь объяснить мне, почему существует эта конвенция?