Я смотрю на примеры try-with-resources в Java и понимаю следующее:
try (Connection conn = DriverManager.getConnection(url, user, pwd);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);) {
...
}
Итак, порядок закрытия:
rs.close();
stmt.close();
conn.close();
, которыйидеально, потому что соединение имеет оператор, а оператор имеет результирующий набор.
Однако в следующих примерах порядок закрытия, я думаю, является обратным ожидаемому:
Пример 1:
try (FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr)) {
...
}
Порядок закрытия:
br.close();
fr.close();
Пример 2:
try (FileOutputStream fos = new FileOutputStream("testSer.ser");
ObjectOutputStream oos = new ObjectOutputStream(fs);) {
...
}
Порядок закрытия:
oos.close();
fos.close();
Верны ли эти примеры?Я думаю, что закрытие в этих примерах должно быть другим, потому что:
- В примере 1 BufferedReader имеет FileReader.
- В примере 2 ObjectOutputStream имеет FileOutputStream.