官术网_书友最值得收藏!

  • 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語句中聲明一個新變量。

例如,給定資源的聲明:

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

而新方法可以是:

看上去簡潔很多!

主站蜘蛛池模板: 彰化市| 扎鲁特旗| 荃湾区| 滦南县| 简阳市| 呼和浩特市| 胶州市| 房山区| 翁源县| 盐亭县| 乌兰察布市| 密云县| 咸宁市| 南康市| 闽侯县| 淮阳县| 图木舒克市| 隆化县| 广灵县| 武夷山市| 疏附县| 泗水县| 肃北| 竹北市| 宜兴市| 东乌珠穆沁旗| 醴陵市| 大石桥市| 卢龙县| 大城县| 黄大仙区| 金昌市| 许昌市| 抚松县| 始兴县| 临夏县| 葫芦岛市| 磴口县| 巫溪县| 泽普县| 澎湖县|