我計劃在後續的一段時間內,寫一系列關於java 9的文章,雖然java 9 不像Java 8或者Java 11那樣的核心java版本,可是仍是有不少的特性值得關注。期待您能關注我,我將把java 9 寫成一系列的文章,大概十篇左右。html
在Java 9的版本中,對從JDK 7開始支持的try-with-resources語法進行了改進。雖然只是一個小小的改進,我仍但願把他介紹給你,咱們一塊兒來天天進步一點點。vue
在Java 7以前沒有try-with-resources
語法,全部的流的銷燬動做,全都須要本身在finally方法中手動的寫代碼進行關閉。以下文中的代碼,將一個字符串寫入到一個文件裏面。java
@Test void testStream() throws IOException { String fileName = "D:\\data\\test\\testStream.txt"; FileOutputStream fos = new FileOutputStream(fileName); //建立IO管道流 OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); try{ bw.write("手寫代碼進行Stream流的關閉"); bw.flush(); }finally{ bw.close(); //手動關閉IO管道流 osw.close(); fos.close(); } }
從Java 7版本開始提供了try-with-resources
語法,咱們只須要把管道流用try()
包含起來,在try代碼段執行完成以後,IO管道流就會自動的關閉,不須要咱們手寫代碼去關閉,這很簡潔!spring
@Test void testTry() throws IOException { String fileName = "D:\\data\\test\\testTry.txt"; try(FileOutputStream fos = new FileOutputStream(fileName); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw);){ bw.write("IO管道流被自動調用close()方法"); bw.flush(); } }
不少小夥伴在知道try-with-resources
語法以後,容易陷入誤區後端
try-with-resources
語法,進行自動的資源關閉誤區一把實踐範圍縮小了,而誤區二把實踐範圍誇大了。那麼什麼樣的資源能夠被自動關閉呢?答案就是實現了AutoCloseable或Closeable接口的類能夠自動的進行資源關閉。springboot
public interface Closeable extends AutoCloseable { public void close() throws IOException; }
Closeable接口繼承自AutoCloseable接口,兩者都包含close()方法。若是你自定義的佔用系統資源的類須要進行資源回收,請實現這兩個接口之一,並在close()方法中進行資源回收與關閉。這樣你自定義的類,也可使用try-with-resources
語法進行資源回收與關閉。前後端分離
try-with-resources
在Java 9中的改進try-with-resources
語法在java 9 中進行了改進,try-with-resources
語法的try()
能夠包含變量,多個變量用分號隔開。
這樣的改進目的是讓語義更加明確,將資源建立代碼與嘗試資源回收的語法分離。微服務
try()
包含的變量@Test void testJava9Try() throws IOException { String fileName = "D:\\data\\test\\testJava9Try.txt"; FileOutputStream fos = new FileOutputStream(fileName); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); try(bw;osw;fos){ //注意這裏:嘗試去回收這三個對象對應的資源,和上文中的java 7代碼對比 bw.write("Java9-能夠被自動調用close()方法"); bw.flush(); } }
本文轉載註明出處(必須帶鏈接,不能只轉文字):字母哥博客 - zimug.comspa
以爲對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創做動力! 。另外,筆者最近一段時間輸出了以下的精品內容,期待您的關注。code