問題タブ [autocloseable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ラムダの使用は、AutoCloseable を実装していないクラスの安全で正しい、同等の回避策ですか?
背景: Java クラスInitialDirContext
を使用して LDAP ディレクトリにアクセスします。 残念ながら、これは interface を実装していないため、 try-with-resourcesブロックAutoCloseable
では使用できません。
これが私が書いた元のコードです:(この回答に触発されました)
これは安全で、正しく、同等の代替品ですか?
答えはイエスだと思いますが、確認したいと思います。このパターンでグーグルを試しましたが、何も見つかりませんでした。それはとても簡単です!したがって、私はそれが正しくないのではないかと疑っています。
編集:同様のパターンでこの回答を見つけました。
java - java.util.logging.FileHandler に try-with-resources を使用するには?
私は以下のコードを持っていて、を使用してログファイルを作成していますjava.util.logging.FileHandler
.
このシナリオでは、finally ブロックのリソースを手動で閉じる必要があります。
このコードは機能します。Autocloseable
さて、インターフェースを実装するかもしれないと思いました。そこで、リソースが自動的に閉じられるようにtry-with-resources
forを使用することにしました (リソースを閉じる手動のジョブを削除するため)。FileHandler
私が試したコードは以下のとおりです。
しかし、このコードは機能しません。
次のようなエラーが表示されます。
The resource type FileHandler does not implement java.lang.AutoCloseable'
可能であれば、try-with-resources を使用してファイル ハンドラーを自動的に閉じる方法は?
手動で閉じる必要がありますか? または、私が取ることができる他のアプローチがあります。
java - リソースを閉じることは、それを開く関数の責任であるべきですか?
上記のコードでは、ResultSet は によって開かれましexecuteQuery
たが、によって閉じられていmapResultToRecord
ます。findRecords
それはそれを閉じるのに理想的な場所ですか、それとも代わりに関数が責任を負うべきですか?