- Java核心編程
- 柳偉衛(wèi)
- 524字
- 2020-11-23 15:08:38
5.8 try-with-resources語句的詳細(xì)用法
關(guān)于try-with-resources語句,在前面章節(jié)也做過介紹,最早是在Java 7中引入的。在Java 9中,又對try-with-resources進(jìn)行了改進(jìn),使得用戶可以更加方便、簡潔地使用try-with-resources語句。
為了演示try-with-resources語句的好處,先來看一個在Java 7之前對于資源處理的例子。
5.8.1 手動關(guān)閉資源
在Java 7之前,資源需要手動關(guān)閉。下面是一個很常見的文件操作的例子:

在Java 7之前,一定要在finally中執(zhí)行close,以釋放資源。
5.8.2 Java 7中的try-with-resources介紹
try-with-resources是Java 7中一個新的異常處理機(jī)制,能夠很容易地關(guān)閉在try-catch語句塊中使用的資源。所謂的資源(resource)是指在程序完成后,必須關(guān)閉的對象。try-with-resources語句確保了每個資源在語句結(jié)束時關(guān)閉。所有實現(xiàn)了java.lang.AutoCloseable接口(其中,它包括實現(xiàn)了java.io.Closeable的所有對象),可以使用作為資源。
例如,我們自定義一個資源類:

執(zhí)行輸出如下:
do something resource is closed
可以看到,資源終止被自動關(guān)閉了。
再來看一個例子,是同時關(guān)閉多個資源的情況:

最終輸出為:
do something do other things other resource is closed some resource is closed
在try語句中越是最后使用的資源,越是最早被關(guān)閉。
5.8.3 try-with-resources在Java 9中的改進(jìn)
作為JEP 213規(guī)范(http://openjdk.java.net/jeps/213)的一部分,try-with-resources聲明在Java 9中已得到改進(jìn)。如果已經(jīng)有一個資源是final或等效于final的變量,則可以在try-with-resources語句中使用該變量,而無須在try-with-resources語句中聲明一個新變量。
例如,給定資源的聲明:

用老方法編寫代碼來管理這些資源是類似的:

而新方法可以是:

看上去簡潔很多!
- Functional Python Programming
- JavaScript百煉成仙
- R語言經(jīng)典實例(原書第2版)
- 樂高機(jī)器人設(shè)計技巧:EV3結(jié)構(gòu)設(shè)計與編程指導(dǎo)
- Mastering LibGDX Game Development
- Learning DHTMLX Suite UI
- UVM實戰(zhàn)
- Python機(jī)器學(xué)習(xí)之金融風(fēng)險管理
- Learning Node.js for .NET Developers
- 寫給大家看的Midjourney設(shè)計書
- Android Studio開發(fā)實戰(zhàn):從零基礎(chǔ)到App上線 (移動開發(fā)叢書)
- 從零開始學(xué)UI:概念解析、實戰(zhàn)提高、突破規(guī)則
- Offer來了:Java面試核心知識點精講(框架篇)
- 微信公眾平臺服務(wù)號開發(fā):揭秘九大高級接口
- WCF 4.5 Multi-Layer Services Development with Entity Framework(Third Edition)