1 回答

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)于資源(您需要關(guān)閉的東西),您可以獲得三個(gè)選項(xiàng):
1) 你在這里創(chuàng)建它,你在這里關(guān)閉它:使用 try-with-resources 構(gòu)造。
2)你將資源傳遞給一個(gè)對(duì)象,然后那個(gè)對(duì)象本身就是一個(gè)可關(guān)閉的資源;當(dāng)該資源關(guān)閉時(shí),它會(huì)關(guān)閉其中的資源。
3)奇怪的東西,不推薦,像聲納這樣的短絨將標(biāo)記為有問(wèn)題,難以調(diào)試等。
當(dāng)然,您應(yīng)該盡可能避免#3。
在這里,您似乎有 2 個(gè)可行的選擇:
使 ClassB 實(shí)現(xiàn) AutoClosable 并讓它在其 close 方法中關(guān)閉該輸入流,或者
而不是傳遞一個(gè)輸入流,而是傳遞一個(gè)可以從中派生輸入流的東西,以便使用它的 ClassB 的代碼可以做 try-with-resources 的事情。據(jù)推測(cè),您可能會(huì)傳遞 Path 或 File 對(duì)象而不是 InputStream。
添加回答
舉報(bào)