web-dev-qa-db-ja.com

Javaで複数のリソースを試してください

私はJava8、およびAutoCloseableリソースに対して、各tryresourceを追加する必要があるか、または上記のコードで機能するかどうかを知りたい

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);
            }
        }
12
en Lopes

tryブロックですべてを宣言することにより、リソースを試して複数のリソースで使用できます。この機能はJava 7not inJava 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ステートメントには、セミコロンで区切られた2つの宣言が含まれます:ZipFileおよびBufferedWriter。それに直接続くコードブロックが正常に、または例外のために終了すると、BufferedWriterおよびZipFileオブジェクトのcloseメソッドがこの順序で自動的に呼び出されます。 リソースのcloseメソッドは、作成の逆の順序で呼び出されることに注意してください。

詳細は documentation をご覧ください

28
Vishnu