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

java中帶參數(shù)的try(){}語(yǔ)法含義詳解

 更新時(shí)間:2022年02月28日 11:29:05   作者:llkoio  
這篇文章主要介紹了java中帶參數(shù)的try(){}語(yǔ)法含義詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

帶參數(shù)的try(){}語(yǔ)法含義

帶資源的try語(yǔ)句(try-with-resource)

最簡(jiǎn)形式為

try(Resource res = xxx)//可指定多個(gè)資源
{
? ? ?work with res
} 

try塊退出時(shí),會(huì)自動(dòng)調(diào)用res.close()方法,關(guān)閉資源。

PS:在coreJava第9版的第一卷的486頁(yè)有解釋。

挺好用的語(yǔ)法,不用寫一大堆finally來(lái)關(guān)閉資源,所有實(shí)現(xiàn)Closeable的類聲明都可以寫在里面,最常見(jiàn)于流操作,socket操作,新版的httpclient也可以;

需要注意的是

try()的括號(hào)中可以寫多行聲明,每個(gè)聲明的變量類型都必須是Closeable的子類,用分號(hào)隔開。樓上說(shuō)不能關(guān)兩個(gè)流的落伍了

補(bǔ)充一下:在沒(méi)有這個(gè)語(yǔ)法之前,流操作一般是這樣寫的:

InputStream is = null;
OutputStream os = null;
try {
?? ?//...
} catch (IOException e) {
?? ?//...
}finally{
?? ?try {
?? ??? ?if(os!=null){
?? ??? ??? ?os.close();
?? ??? ?}
?? ??? ?if(is!=null){
?? ??? ??? ?is.close();
?? ??? ?}
?? ?} catch (IOException e2) {
?? ??? ?//...
?? ?}
}?? ?

而現(xiàn)在你可以這樣寫:

try(
?? ?InputStream is = new FileInputStream("...");
?? ?OutputStream os = new FileOutputStream("...");
){
?? ?//...
}catch (IOException e) {
?? ?//...
}

生活一下就美好了

對(duì)try(){}的簡(jiǎn)單理解

以前使用try catch-finally都是捕獲異常,然后流關(guān)閉等等,代碼總是這樣的:

好比往FileOutputStream寫東西

@Test
  public void test2() throws IOException {
    File file = new File("E://test");
    if (!file.exists()) {
      file.createNewFile();
    }
    FileOutputStream fileOutputStream = new FileOutputStream(file);
    try {
      System.out.println("do something...");
      fileOutputStream.write("aaa".getBytes());
      fileOutputStream.flush();
    } catch (Exception e) {
      System.out.println("do ...");
    } finally {
      fileOutputStream.close();
    }
  }

這樣寫很難受,可以進(jìn)行優(yōu)化

將FileOutputStream fileOutputStream = new FileOutputStream(file)放到try()里面,也可以放多個(gè)

  @Test
  public void test2() throws IOException {
    File file = new File("E://test");
    if (!file.exists()) {
      file.createNewFile();
    }
   
    try( FileOutputStream fileOutputStream = new FileOutputStream(file);) {
      System.out.println("do something...");
      fileOutputStream.write("aaa".getBytes());
      fileOutputStream.flush();
    } catch (Exception e) {
      System.out.println("do ...");
    } 
  }

try()里每個(gè)聲明的變量類型都必須是Closeable的子類,就一個(gè)close方法

相當(dāng)于系統(tǒng)自動(dòng)將關(guān)閉操作放到了finally里面而不需要我們自己寫了,很nice

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論