ホームページ  >  記事  >  Java  >  Java 7 で try-with-resources を使用してリソースを正常に閉じる方法

Java 7 で try-with-resources を使用してリソースを正常に閉じる方法

WBOY
WBOYオリジナル
2023-07-29 10:09:231657ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。