問題タブ [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.

0 投票する
3 に答える
1168 参照

java - try-with-resources ブロックでオブジェクトのメソッドを呼び出す

Java チュートリアルでは、次のことができると述べていますtry-with-resources

このチュートリアルでは、 が閉じられることはありません。したがって、次のようにインターフェイスも実装しているため、ResultSetを含めたいと思います。ResultSetAutoCloseable

これは問題なく動作しますが、クエリを実行する前にPreparedStatementsいくつかの値を設定できるようにしたいと考えています。

変数の割り当てのみが許可されているため (私は推測しています)、これによりさまざまなコンパイル エラーが発生します。

try-with-resources同じブロックでこれをきちんと行う方法はありますか?

私はすでに考えました:

  1. ネストされた try-with-resources (これは私が避けようとしているものです)。そうすることに「悪い」ことは何もないことに気づきました。読みやすくするためにこれをやりたいだけです。

次の場合を考慮してください。

  1. メソッドにオブジェクトをsetString()返させ、代入に含める
  2. 接続を作成し、それに応じてパラメーターを設定する、ある種のヘルパー メソッドを作成します。

何かのようなもの:

0 投票する
2 に答える
470 参照

java - try ブロック外の AutoCloseable インスタンスへの参照

便宜上、インターフェイスを使用して、オブジェクトをさらにAutoCloseable使用する前にファイナライズする必要があるオブジェクトを処理したいと考えています。

唯一の問題は、try-with-resourcesブロックがそれ自体であるということです。つまり、通常、AutoCloseableインスタンスへの参照を取得するには、次のようにする必要があります。

ここでこの構造:

やや乱雑に見えます。したがって、私の質問は設計上の問題に関するものです。try-w-rJavaアーキテクトが次のようなブロックの使用を想定していなかった理由は何なのか疑問に思います。

上で説明したように、私はそれを使用すべきではないのでしょうか?それを行うのが良い習慣である場合は?

編集なぜ私の質問がJavaのtry-with-resourceで宣言が必要なのかと異なる理由を説明するように求められました

説明は非常に簡単です。理由を尋ねているのではありません。、しかし:それを行うのは良い習慣ですか?

0 投票する
1 に答える
268 参照

java - Autocloseable クラスがデフォルトの close メソッドを呼び出さない

私はこのコードを持っています:

そしてメインクラス:

この出力が得られる理由を知りたいです。

それ以外の:

0 投票する
3 に答える
1148 参照

java - Java プログラムの終了時にファイルを閉じないと何か害はありますか?

プログラムが起動すると、ファイルが開かれ、定期的に書き込まれます。(これはログ ファイルではありません。プログラムの出力の 1 つです。) プログラムの長さに合わせてファイルを使用できるようにする必要がありますが、ファイルを終了するために特に何もする必要はありません。閉じるだけです。

Java でのファイル I/O について、実装AutoCloseableして try-with-resources ブロックにラップすることになっていることを収集します。ただし、このファイルは存続期間が長く、プログラムの数少ない出力の 1 つであるため、開いたすべてのファイルが try-with-resources ブロックでラップされるように整理するのは難しいと感じています。さらに、トップレベルのクラス (私のmain()関数がある場所) は、このファイルについて知りません。

これが私のコードです。の欠如に注意してくださいwriter.close():

tl;drリソースが開かれた出力ファイルである場合、実装AutoCloseableして呼び出す必要writer.close()がありますか?プログラムが完了するまで閉じる必要はありませんか? JVM と OS (Linux) が自動的にクリーンアップしてくれると想定できますか?

おまけ (?): C#IDisposeableでもこれに苦労しました。このusingブロックは、Java の try-with-resources 構造のように、何かを開いたり、すばやく処理したり、すぐに閉じたりする場合に便利な機能です。しかし、多くの場合、特にファイルの場合、そのリソースへのアクセスがしばらく滞っている場合や、複数のそのようなリソースを管理する必要がある場合はそうではありません。私の質問に対する答えが「常に try-with-resources ブロックを使用する」である場合、私は再び立ち往生します。

0 投票する
1 に答える
486 参照

java - リソースを閉じるためのベスト プラクティスは何ですか?

閉じる必要があるリソースを割り当てた Java クラスがあります。これを強制する方法がよくわかりません。現在のアプローチでは、 interface を実装していますAutoCloseable。呼び出し元が時々呼び出すことを期待し、すべてのメソッドの開始時にチェックされる close をclose()追加し、の場合、メソッドは throws します。booleantrueIllegalStateException

呼び出し元が呼び出すclose()必要があることと、すべてのメソッドの開始時に閉じていることを確認する必要があることの両方は、あまり良くありません。これを回避するためのベストプラクティスはありますか?