try-with-resources を使用して Java 7 でリソースを正常に閉じる方法
Java では、ファイル、ネットワーク接続、データベース接続などのリソースを使用する必要があることがよくあります。これらのリソースを使用した後、リソースを解放してメモリ リークを回避するには、プログラム内でこれらのリソースを明示的に閉じる必要があります。 Java 7 では、新しい糖衣構文である try-with-resources が導入され、リソースをより適切に閉じることができるようになりました。
Java 7 より前は、通常、リソースを閉じるために try-catch-finally を使用していました。たとえば、ファイルを読み取るとき、コードは次のようになります。
FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); // 读取文件的操作 } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } }
このメソッドはより面倒で、リソースの終了を処理する追加のコードを記述する必要があり、例外が発生してリソースが停止する可能性があります。適時閉店となります。
Java 7 では、try-with-resources ステートメントを使用してリソースをより簡潔に閉じることができます。 try-with-resources を使用すると、try ステートメントの括弧内に close 操作を入れることができ、Java は try ステートメントの最後でリソースを自動的に閉じます。たとえば、上記のコードは次のように書き換えることができます:
try (FileInputStream fis = new FileInputStream("file.txt")) { // 读取文件的操作 } catch (IOException e) { e.printStackTrace(); }
上記のコードでは、try-with-resources を使用して FileInputStream オブジェクトを宣言します。try ステートメントが終了すると、Java は自動的に次の close メソッドを呼び出します。 FileInputStream を使用してリソースを閉じます。 try ステートメント ブロックで例外が発生した場合、catch ステートメントが例外をキャッチして処理します。
try-with-resources は複数のリソースを同時に宣言することもでき、宣言された順序で順番にクローズされます。たとえば、2 つのファイルの内容を同時に読み取ります。
try (FileInputStream fis1 = new FileInputStream("file1.txt"); FileInputStream fis2 = new FileInputStream("file2.txt")) { // 读取文件的操作 } catch (IOException e) { e.printStackTrace(); }
上記のコードでは、セミコロンを使用して複数のリソースの宣言を区切っており、それらは最後に次々と閉じられます。 try ステートメント。
さらに、カスタム クラスを使用してリソースを自動的に閉じることもできます。必要なのは、カスタム クラスに AutoCloseable インターフェイスを実装し、close メソッドをオーバーライドすることだけです。たとえば、カスタム ネットワーク接続クラスを作成します。
public class MyConnection implements AutoCloseable { public MyConnection() { // 进行连接的操作 } // 执行一些操作 @Override public void close() throws Exception { // 关闭连接的操作 } }
次に、このカスタム クラスを使用するときに、try-with-resources ステートメントで直接宣言できます。 try-with-resources ステートメントの最後で、Java は自動的に MyConnection クラスの close メソッドを呼び出して接続を閉じます。
要約すると、try-with-resources はリソースを閉じるための洗練された方法であり、コード内でより簡潔にリソースを解放し、一般的なリソース リークの問題を回避するのに役立ちます。一部の Java 組み込みリソースを自動的に閉じるだけでなく、カスタム クラスを使用してリソースを自動的に閉じることもできます。コードを記述するときは、try-with-resources ステートメントを積極的に使用してコードを改善し、コードの可読性と堅牢性を向上させる必要があります。
以上がJava 7 で try-with-resources を使用してリソースを正常に閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。