Kotlin实战指南十九:use 函数魔法
生活随笔
收集整理的這篇文章主要介紹了
Kotlin实战指南十九:use 函数魔法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/117366756
本文出自【趙彥軍的博客】
文章目錄
- 往期精彩文章
- use函數
往期精彩文章
Kotlin實戰指南十八:open、internal 關鍵字使用
Kotlin實戰指南十七:JvmField、JvmStatic使用
Kotlin實戰指南十六:Synchronized、Volatile
本文章轉載于:Kotlin use函數的魔法
use函數
- 實現了Closeable接口的對象可調用use函數
- use函數會自動關閉調用者(無論中間是否出現異常)
在這里插入圖片描述
- 可以看出,use 函數內部實現也是通過 try-catch-finally 塊捕捉的方式,所以不用擔心會有異常拋出導致程序退出
- close 操作在finally里面執行,所以無論是正常結束還是出現異常,都能正確關閉調用者
下面我們就對比一下 Java 和 Kotlin 實現的不同
Java 版本
//Java 實現 FileInputStream fis = null; DataInputStream dis = null; try {fis = new FileInputStream("/home/test.txt");dis = new DataInputStream(new BufferedInputStream(fis));String lines = "";while((lines = dis.readLine()) != null){System.out.println(lines);} } catch (IOException e){e.printStackTrace(); } finally {try {if(dis != null)dis.close();} catch (IOException e) {e.printStackTrace();}try {if(fis != null)fis.close();} catch (IOException e) {e.printStackTrace();} }Kotlin 版本
File("/home/test.txt").readLines().forEach { println(it) }對 Kotlin 就是可以兩行實現。
仔細翻閱 readLines 這個擴展函數的實現你會發現,它也是間接調用 use,這樣就省去了捕捉異常和關閉的煩惱
同樣的,經過包裝以后你只需要關注讀出來的數據本身而不需要 care 各種異常情況
- File的一些其它有用的擴展函數
上面的函數都是基于use實現的,可以放心使用,而不用擔心異常的發生,并且會自動關閉IO流
總結
以上是生活随笔為你收集整理的Kotlin实战指南十九:use 函数魔法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin实战指南十八:open、in
- 下一篇: Kotlin实战指南二十:flow