try-with-resources: дает ли Java какие-либо гарантии порядка вызовов.close()?

При использовании try-with-resources в Java 7 есть какие-либо гарантии относительно порядка, в котором .close() называется?

Вот пример кода из Oracle, показывающий эту функцию:

try (
  java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
  java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
) {

  // Enumerate each entry

  for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {

    // Get the entry name and write it to the output file

    String newLine = System.getProperty("line.separator");
    String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine;
    writer.write(zipEntryName, 0, zipEntryName.length());
  }

И то и другое zf.close() а также writer.close() будет называться. Гарантирован ли заказ?

1 ответ

Решение

Это в обратном порядке объявления, закрытие изнутри наружу.

Другие вопросы по тегам