如果我有一個利用IO資源的類,例如磁盤平面文件,DB或某種其他形式的外部資源,那麼關閉這些流的優缺點是什麼/ GC中重載的finalize()方法中的連接?我雖然可以利用現有的JVM GC,並減少依賴客戶端調用類方法(如closeResources())的風險,並編寫類似意大利麪條的try-catches(嵌套try-catches和ifs being我最不喜歡的編程結構)。在重寫的finalize()方法中關閉類IO資源
作爲一個具體的例子,我有一個簡單的文件閱讀包裝。該課程使用String filePath
構建,它將該文件讀入List<String[]>
。我不想在多個地方關閉BufferedReader
,就像在打開文件時出現問題(catch子句)時關閉它一樣,但如果文件讀取正常,也可以關閉它。我想把它放在一個地方並確保無論對象何時獲取GC,它總是關閉。
這種方法是一種很好的做法,還是我試圖在Java的範圍內提供太高水平的便利?
「BufferedReader」變量是構造函數的局部變量,還是其他方法,還是實例變量? –
實例變量 – amphibient