Closeable は Close しなければ閉じられない
非常に当たり前だが、以下のコードでは "closed" が出力されることはない。
package sandbox; import java.io.Closeable; import java.io.IOException; public class Sandbox { public static void main(String[] args) throws Exception { String a = get(); System.out.println(a); } private static String get() { return loadFromHoge(new HogeStream()); } private static String loadFromHoge(HogeStream hogeStream) { return "load"; } static class HogeStream implements Closeable { @Override public void close() throws IOException { System.out.println("closed"); } } }
明らかに get の中で一生を終えているので上手いこと閉じてほしいという気持ちではある。