摘要:我們可以設(shè)計(jì)一個(gè)工具類(lèi),如下那么,在代碼塊中就可以這樣寫(xiě)這些代碼都可以省略只需要下面這一行代碼就可以了是不是方便了很多呢這個(gè)工具類(lèi)用到了可變參數(shù),接口隔離的思想。
考慮這樣一種場(chǎng)景,你要為系統(tǒng)編寫(xiě)一個(gè)下載文件并緩存到本地的功能,你會(huì)用到InputSteam和OutputStream類(lèi),你可能會(huì)這么寫(xiě):
InputStream is = null; OutputStream os = null; try { is = new FileInputStream(""); os = new FileOutputStream(""); //下載文件的代碼 //保存到本地的代碼 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } }
在finally代碼塊中,為了關(guān)閉兩個(gè)IO流居然寫(xiě)了14行代碼,假如每次用到IO的時(shí)候都寫(xiě)一大堆if……else,也挺煩的,有沒(méi)有什么辦法可以用一行代碼就搞定呢?查看InputStream和OutputStream抽象類(lèi)源代碼,發(fā)現(xiàn)他們都實(shí)現(xiàn)了共同的接口Closeable,事實(shí)上,java中所有Stream類(lèi)都必須實(shí)現(xiàn)這個(gè)接口,那么,這下就好辦了。
我們可以設(shè)計(jì)一個(gè)工具類(lèi),如下:
public class IOUtil { public static void close(Closeable... closeableList) { try { for (Closeable closeable : closeableList) { if (closeable != null){ closeable.close(); } } } catch (IOException e) { e.printStackTrace(); } } }
那么,在finally代碼塊中就可以這樣寫(xiě):
finally{ /* 這些代碼都可以省略 if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } */ //只需要下面這一行代碼就可以了 IOUtil.close(is, os); }
是不是方便了很多呢?這個(gè)工具類(lèi)用到了可變參數(shù),接口隔離的思想。這樣寫(xiě)代碼,不僅僅只是方便而已,代碼的可讀性也好了很多,不是嗎?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73068.html
摘要:下面圍繞的這樣的目的,即左右知乎網(wǎng)頁(yè)上屏幕截圖功能的實(shí)現(xiàn)前端掘金背景最近注意到知乎的屏幕截圖反饋功能,感覺(jué)非常不錯(cuò)。正如你期望的,文中的闖關(guān)記之垃圾回收和內(nèi)存管理前端掘金題圖來(lái)源,授權(quán)基于協(xié)議。 微信小程序?qū)崙?zhàn)學(xué)習(xí) 起手式 DEMO 仿肯德基 - 前端 - 掘金小程序?大場(chǎng)景? 微信小程序本質(zhì)上來(lái)說(shuō)就是一個(gè) HTML 5(移動(dòng)網(wǎng)頁(yè)) 應(yīng)用,用view、scoll-view代替了div標(biāo)...
摘要:介紹是對(duì)于開(kāi)發(fā)更便捷的開(kāi)源迷你框架,包含工具類(lèi)實(shí)用功能的集合,總包體積不到。你可以把想象成的瑞士軍刀不僅小,鋒利而且包含許多便利的功能。 showImg(https://segmentfault.com/img/remote/1460000015356940); Jodd介紹 Jodd是對(duì)于Java開(kāi)發(fā)更便捷的開(kāi)源迷你框架,包含工具類(lèi)、實(shí)用功能的集合,總包體積不到1.7M。 Jodd構(gòu)...
摘要:有個(gè)時(shí)候多人多協(xié)作開(kāi)發(fā)過(guò)程中,會(huì)存在臨時(shí)修改的二方包,同樣版本需要重新拉取的情況。發(fā)現(xiàn)大部分人包括自己長(zhǎng)久以來(lái)也是采用最原始的方法,一層層找到對(duì)應(yīng)的目錄刪除對(duì)應(yīng)的文件。某天實(shí)在是受不了了,寫(xiě)了個(gè)小工具分享下,小代碼解決小問(wèn)題。 有個(gè)時(shí)候多人多team協(xié)作開(kāi)發(fā)過(guò)程中,會(huì)存在臨時(shí)修改的二方包,同樣版本需要重新拉取的情況。發(fā)現(xiàn)大部分人包括自己長(zhǎng)久以來(lái)也是采用最原始的方法,一層層找到對(duì)應(yīng)的目錄...
摘要:二來(lái),給大家新開(kāi)坑的項(xiàng)目一個(gè)參考。因此,本系列以主要以官方文檔為基礎(chǔ),將盡可能多的特性融入本項(xiàng)目,并標(biāo)注官網(wǎng)原文出處,有興趣的小伙伴可點(diǎn)擊深入了解??梢酝ㄟ^(guò)一些特殊協(xié)議例如將消息作為統(tǒng)一消息服務(wù)導(dǎo)出。下載完成后自行修改和。 開(kāi)坑前言 我給這個(gè)專欄的名氣取名叫做小項(xiàng)目,聽(tīng)名字就知道,這個(gè)專題最終的目的是帶領(lǐng)大家完成一個(gè)項(xiàng)目。為什么要開(kāi)這么大一個(gè)坑呢,一來(lái),雖然網(wǎng)上講IT知識(shí)點(diǎn)的書(shū)籍鋪天蓋...
摘要:探究系統(tǒng)登錄驗(yàn)證碼的實(shí)現(xiàn)后端掘金驗(yàn)證碼生成類(lèi)手把手教程后端博客系統(tǒng)第一章掘金轉(zhuǎn)眼間時(shí)間就從月份到現(xiàn)在的十一月份了。提供了與標(biāo)準(zhǔn)不同的工作方式我的后端書(shū)架后端掘金我的后端書(shū)架月前本書(shū)架主要針對(duì)后端開(kāi)發(fā)與架構(gòu)。 Spring Boot干貨系列總綱 | 掘金技術(shù)征文 - 掘金原本地址:Spring Boot干貨系列總綱博客地址:http://tengj.top/ 前言 博主16年認(rèn)識(shí)Spin...
閱讀 3048·2021-10-13 09:39
閱讀 1890·2021-09-02 15:15
閱讀 2452·2019-08-30 15:54
閱讀 1814·2019-08-30 14:01
閱讀 2613·2019-08-29 14:13
閱讀 1426·2019-08-29 13:10
閱讀 2740·2019-08-28 18:15
閱讀 3902·2019-08-26 10:20