私はJava8
、およびAutoCloseable
リソースに対して、各try
にresource
を追加する必要があるか、または上記のコードで機能するかどうかを知りたい
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
ブロックですべてを宣言することにより、リソースを試して複数のリソースで使用できます。この機能は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 をご覧ください