前提
JavaのStreamやReaderのソースコードで子クラスのオブジェクトを以下のようにclose()すれば親クラスの方も自動的にclose()するという仕組みがあります。
ソースコード1
Java
1BufferedReader in = null; 2try { 3 in = new BufferedReader(new FileReader("abc.txt")); 4} finally { 5//BufferedReaderを閉じればFileReaderも自動的に閉じる。 6 if (in != null){in.close();} 7}
質問
こういうのを見ていて思ったのですが、『親クラスと子クラスを別々に定義して、かつ親クラスはオブジェクト生成に成功、子クラスで例外が出て失敗』というようなケースでは親クラスのオブジェクトもcloseしなければならないのではないでしょうか?
例えば以下のようなケースです。
ソースコード2
Java
1FileReader parent = null; 2BufferedReader in = null; 3try { 4 parent = new FileReader("abc.txt"); 5 in = new BufferedReader(parent); 6} finally { 7//これじゃ足りないのではないか。 8 if (in != null){in.close();} 9}
これだとFileReaderのオブジェクトが開放されずにメモリリークが起こる可能性があるのではないかと考えています。
この問題意識は正しいでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。