亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java9版本特性資源自動關(guān)閉的語法增強(qiáng)

 更新時間:2022年03月15日 12:39:34   作者:字母哥哥  
這篇文章主要為大家介紹了java9版本特性資源自動關(guān)閉的語法增強(qiáng)的詳細(xì)使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

file

我計(jì)劃在后續(xù)的一段時間內(nèi),寫一系列關(guān)于java 9的文章,雖然java 9 不像Java 8或者Java 11那樣的核心java版本,但是還是有很多的特性值得關(guān)注。期待您能關(guān)注我,我將把java 9 寫成一系列的文章,大概十篇左右。

java9第一篇-可以在interface中定義私有方法了

在Java 9的版本中,對從JDK 7開始支持的try-with-resources語法進(jìn)行了改進(jìn)。雖然只是一個小小的改進(jìn),我仍希望把他介紹給你,我們一起來每天進(jìn)步一點(diǎn)點(diǎn)。

一、先說Java7的try-with-resources(Java9改進(jìn)版在后文)

在Java 7之前沒有try-with-resources語法,所有的流的銷毀動作,全都需要自己在finally方法中手動的寫代碼進(jìn)行關(guān)閉。如下文中的代碼,將一個字符串寫入到一個文件里面。

@Test
void 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("手寫代碼進(jìn)行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)閉,這很簡潔!

@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管道流被自動調(diào)用close()方法");
    bw.flush();
  }
}

二、避免走入誤區(qū)

很多小伙伴在知道try-with-resources語法之后,容易陷入誤區(qū)

誤區(qū)一:只有IO管道流才能使用try-with-resources語法,進(jìn)行自動的資源關(guān)閉

誤區(qū)二:所有帶有close()方法的類對象,都會自動的調(diào)用close()方法進(jìn)行資源關(guān)閉

誤區(qū)一把實(shí)踐范圍縮小了,而誤區(qū)二把實(shí)踐范圍夸大了。那么什么樣的資源可以被自動關(guān)閉呢?答案就是實(shí)現(xiàn)了AutoCloseable或Closeable接口的類可以自動的進(jìn)行資源關(guān)閉。

public interface Closeable extends AutoCloseable {
    public void close() throws IOException;
}

Closeable接口繼承自AutoCloseable接口,二者都包含close()方法。如果你自定義的占用系統(tǒng)資源的類需要進(jìn)行資源回收,請實(shí)現(xiàn)這兩個接口之一,并在close()方法中進(jìn)行資源回收與關(guān)閉。這樣你自定義的類,也可以使用try-with-resources語法進(jìn)行資源回收與關(guān)閉。

三、try-with-resources在Java 9中的改進(jìn)

try-with-resources語法在java 9 中進(jìn)行了改進(jìn),try-with-resources語法的try()可以包含變量,多個變量用分號隔開。 這樣的改進(jìn)目的是讓語義更加明確,將資源創(chuàng)建代碼與嘗試資源回收的語法分離。

語義一:嘗試去執(zhí)行代碼段,如果拋出異常,對異常進(jìn)行處理

語義二:嘗試去自動關(guān)閉資源,關(guān)閉誰?關(guān)閉被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){  //注意這里:嘗試去回收這三個對象對應(yīng)的資源,和上文中的java 7代碼對比
    bw.write("Java9-可以被自動調(diào)用close()方法");
    bw.flush();
  }
}

以上就是java9版本特性資源自動關(guān)閉的語法增強(qiáng)的詳細(xì)內(nèi)容,更多關(guān)于java9資源自動關(guān)閉的語法增強(qiáng)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringMVC + jquery.uploadify實(shí)現(xiàn)上傳文件功能

    SpringMVC + jquery.uploadify實(shí)現(xiàn)上傳文件功能

    文件上傳是很多項(xiàng)目都會使用到的功能,SpringMVC當(dāng)然也提供了這個功能。不過小編不建議在項(xiàng)目中通過form表單來提交文件上傳,這樣做的局限性很大。下面這篇文章主要介紹了利用SpringMVC + jquery.uploadify實(shí)現(xiàn)上傳文件功能的相關(guān)資料,需要的朋友可以參考下。
    2017-06-06
  • springboot jpaRepository為何一定要對Entity序列化

    springboot jpaRepository為何一定要對Entity序列化

    這篇文章主要介紹了springboot jpaRepository為何一定要對Entity序列化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring中的PathVariable注釋解析

    Spring中的PathVariable注釋解析

    這篇文章主要介紹了Spring中的PathVariable注釋用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • springboot如何讀取sftp的文件

    springboot如何讀取sftp的文件

    這篇文章主要介紹了springboot如何讀取sftp的文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 如何加密配置文件里的敏感數(shù)據(jù)

    如何加密配置文件里的敏感數(shù)據(jù)

    這篇文章主要介紹了加密配置文件里的敏感數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringCloud應(yīng)用骨架開發(fā)詳解

    SpringCloud應(yīng)用骨架開發(fā)詳解

    這篇文章主要介紹了SpringCloud應(yīng)用骨架開發(fā)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • springmvc fastjson 反序列化時間格式化方法(推薦)

    springmvc fastjson 反序列化時間格式化方法(推薦)

    下面小編就為大家?guī)硪黄猻pringmvc fastjson 反序列化時間格式化方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • SpringBoot配置默認(rèn)HikariCP數(shù)據(jù)源

    SpringBoot配置默認(rèn)HikariCP數(shù)據(jù)源

    咱們開發(fā)項(xiàng)目的過程中用到很多的開源數(shù)據(jù)庫鏈接池,比如druid、c3p0、BoneCP等等,本文主要介紹了SpringBoot配置默認(rèn)HikariCP數(shù)據(jù)源,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 顯示SonarQube私有項(xiàng)目徽章方案流程

    顯示SonarQube私有項(xiàng)目徽章方案流程

    這篇文章主要為大家介紹了如何顯示SonarQube私有項(xiàng)目徽章方案的流程,sonarQube目前不支持私有項(xiàng)目的徽章圖片獲取,這個問題早在?2018年就在sonar社區(qū)里有過激烈的討論,至今無果,只能自己尋求一種可以快速實(shí)施的方案
    2022-02-02
  • Java創(chuàng)建線程三種方式的優(yōu)缺點(diǎn)

    Java創(chuàng)建線程三種方式的優(yōu)缺點(diǎn)

    今天小編就為大家分享一篇關(guān)于Java創(chuàng)建線程三種方式的優(yōu)缺點(diǎn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論