原文:http://blog.csdn.net/tfnew21/article/details/9137867
Java7增強了try語句的功能,它允許在try關鍵字後緊跟一對圓括號,圓括號可以聲明、初始化一個或多個資源(此處的資源是指那些必須在程序結束時顯式關閉的資源,比如數據庫連接,網絡連接等),try-with-resources 是一個定義了一個或多個資源的try 聲明,try語句在該語句結束時自動關閉這些資源。try-with-resources確保每一個資源在處理完成後都會被關閉。這些資源必須實現AutoCloseable或者Closeable接口,實現這兩個接口就必須實現close() 方法。下面就是一個自動關閉資源的try語句例子,代碼如清單8-6所示。
清單8-6
package com.javapp.ch8; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.PrintStream; public class AutoCloseTest { public static void main(String[] args) throws IOException { try ( // 聲明、初始化兩個可關閉的資源 BufferedReader br = new BufferedReader(new FileReader( "AutoCloseTest.java")); PrintStream ps = new PrintStream(new FileOutputStream( "readme.txt"))) { // 使用兩個資源 System.out.println(br.readLine()); ps.println("test"); } // 自動關閉資源的try語句相當於包含了隱式的finally塊,用於關閉資源。 } } |
在上面程序中,一個try-with-resourcse聲明瞭包含兩個對象的聲明,用分號隔開,和聲明一個對象相同,會在結束後自動調用close方法。 此外,try-with-resources 可以跟catch和finally,catch和finally的是在try-with-resources裏聲明的對象關閉之後才執行。