更新:@PaulGrokeは以下の点を指摘しているため、Java 7で変更されました。現在はAutoCloseableです。ストリームに結びついておらず、新しいtry-with-resources構成でサポートされています。.NETのIDisposableのJava対応版としてCloseableを使用する必要がありますか?
AutoCloseable
は、.NETのIDisposable
インターフェイスの直接Javaに相当します。ジャワ1.5で導入さ
Closeable
インタフェースがしっかりストリームに関連付けられ、さらにIOException
の例外指定子を有しています。これは、汎用のクリーンアップロジックではなく、ストリームやその他のIO関連アクティビティに対してのみ使用する必要があることを示しています。
確かclose()
方法の説明は、ストリーム/ IOコンテキストの外で全く理にかなって:
void close() throws IOException
はこのストリームを解放、それに関連するすべてのシステムリソースを閉じます。
従って私はそれにDispose()
方法で、私自身のインタフェース、Disposable
を宣言、および.NETのIDisposable
インターフェイスにアナログとしてそれを使用する必要がありますか?それとも、完璧にフィットしないかもしれませんが、Closeable
を再使用する必要がありますか?
@Pharapリンク先のページに記載されている「IDisposable」を実装するための2つのパターンがあります。 'Object.Finalize()'の実装は、あなたのオブジェクトがアンマネージドリソース(つまり、SafeHandleでラップされていないネイティブリソース)の割り当てを直接担当する比較的まれなシナリオでのみ必要です。 「IDisposable [...]を実装するために.NETが推奨する方法では、 'Object.Finalize()'」の使用が必要であるという記述は、完全に正しいわけではありません。 –