これは SO に関する私の最初の質問であり、同様の質問がまだないことに混乱しています!
質問は次のとおりです。
try-with-resources がフィールド変数で機能しないのはなぜですか?
言い換えれば、そのために常にローカル変数が必要なのはなぜですか?
ここにいくつかのサンプルコードがあります:
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();
}
}
}
なぜこの慣習があるのか 誰か説明してもらえますか?