您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“java9版本增強了哪些語法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“java9版本增強了哪些語法”吧!
在Java 7之前沒有try-with-resources
語法,所有的流的銷毀動作,全都需要自己在finally方法中手動的寫代碼進行關(guān)閉。如下文中的代碼,將一個字符串寫入到一個文件里面。
@Testvoid testStream() throws IOException { String fileName = "D:\\data\\test\\testStream.txt"; FileOutputStream fos = new FileOutputStream(fileName); //創(chuàng)建IO管道流 OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); try{ bw.write("手寫代碼進行Stream流的關(guān)閉"); bw.flush(); }finally{ bw.close(); //手動關(guān)閉IO管道流 osw.close(); fos.close(); }}
從Java 7版本開始提供了try-with-resources
語法,我們只需要把管道流用try()
包含起來,在try代碼段執(zhí)行完成之后,IO管道流就會自動的關(guān)閉,不需要我們手寫代碼去關(guān)閉,這很簡潔!
@Testvoid 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管道流被自動調(diào)用close()方法"); bw.flush(); }}
很多小伙伴在知道try-with-resources
語法之后,容易陷入誤區(qū)
try-with-resources
語法,進行自動的資源關(guān)閉誤區(qū)二:所有帶有close()方法的類對象,都會自動的調(diào)用close()方法進行資源關(guān)閉誤區(qū)一把實踐范圍縮小了,而誤區(qū)二把實踐范圍夸大了。那么什么樣的資源可以被自動關(guān)閉呢?答案就是實現(xiàn)了AutoCloseable或Closeable接口的類可以自動的進行資源關(guān)閉。
public interface Closeable extends AutoCloseable { public void close() throws IOException;}
Closeable接口繼承自AutoCloseable接口,二者都包含close()方法。如果你自定義的占用系統(tǒng)資源的類需要進行資源回收,請實現(xiàn)這兩個接口之一,并在close()方法中進行資源回收與關(guān)閉。這樣你自定義的類,也可以使用try-with-resources
語法進行資源回收與關(guān)閉。
try-with-resources
在Java 9中的改進try-with-resources
語法在java 9 中進行了改進,try-with-resources
語法的try()
可以包含變量,多個變量用分號隔開。 這樣的改進目的是讓語義更加明確,將資源創(chuàng)建代碼與嘗試資源回收的語法分離。
try()
包含的變量 @Testvoid 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){ //注意這里:嘗試去回收這三個對象對應(yīng)的資源,和上文中的java 7代碼對比 bw.write("Java9-可以被自動調(diào)用close()方法"); bw.flush(); }}
到此,相信大家對“java9版本增強了哪些語法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。