在 Java 中尝试使用多个资源

Try with multiple Resource in Java

我是 Java8 的新手,我想知道对于 AutoCloseable 资源,我是否必须为每个 resource 添加一个 try,或者它将与上面的代码一起工作

try (Connection conn = getConnection();) {

            Statement stmt = conn.createStatement();

            ResultSet rset = stmt.executeQuery(sql);

            while (rset.next()) {
                TelefonicaDataVO vo = new TelefonicaDataVO();
                vo.setTelefonicaDataId(rset.getString("Telefonica_PSD_ID"));
                vo.setReceptionDate(nvl(rset.getTimestamp("CREATION_DATE")));
                vo.setMessage(nvl(rset.getString("MESSAGE")));
                ret.add(vo);
            }
        }

通过在 try 块中声明所有资源,Try with resources 可以与多个资源一起使用,此功能在 [=32= 中引入] 7 不在 java 8 如果你有多个你可以像下面这样给

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());
        }
    }

在此示例中,try-with-resources 语句包含两个用分号分隔的声明:ZipFileBufferedWriter。当紧随其后的代码块正常终止或由于异常终止时,将按此顺序自动调用 BufferedWriter 和 ZipFile 对象的关闭方法。 请注意,资源的关闭方法的调用顺序与其创建顺序相反。

请参阅documentation了解更多信息