2 回答
TA貢獻1862條經驗 獲得超7個贊
Java Runtime Library 中有許多方法采用例如 an?OutputStream(例如Files.copy())。除非這些方法明確聲明該方法將關閉流,否則不會關閉流。關閉流是流“所有者”的責任,例如方法的調用者。
類似地,InflaterInputStreamthat的構造函數都不會Inflater聲明它們將end()執行Inflater,這意味著它們不會執行。在需要時由調用者來結束它。
Inflater當使用為您創建的構造函數時, 成為該內部InflaterInputStream的“所有者”?,因此結束.?InflaterInflaterInputStreamInflater
資源管理
資源管理的一般準則是,除非另有說明,分配資源的人負責釋放(關閉、結束……)資源。
Inflater是一種資源,因此應用正常的資源管理規則。
TA貢獻1818條經驗 獲得超8個贊
與許多“為什么”問題一樣,這是一個有根據的猜測。我沒有看到任何明確的解釋,所以誰知道原來的程序員在想什么?無論如何,請對我的回答持保留態度。
其他構造函數都采用實例Inflater,這意味著用戶具有對 (internal) 的引用Inflater。請注意,這些類沒有吸氣劑Inflater。因此,用戶引用它的唯一方法是從外部傳遞它(好吧,那并使用反射,但我們不要去那里)。
所以也許假設是因為用戶通過了他自己的Inflater實例,然后他想管理自己Inflater,可能會在這個蒸汽結束后重新使用它。因此,Inflater在流關閉時關閉不是一個好主意。
添加回答
舉報
