Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のtry-with-resourcesステートメントで複数のリソースを宣言する方法

Java 9におけるtry-with-resourcesの改良点

Java 9では、try-with-resourcesステートメントが改良されました。すでにfinalとして宣言されているリソース、あるいは実質的にfinal(effectively final)とみなされる変数が存在する場合、try-with-resourcesステートメント内で新たな変数を宣言し直すことなく、その変数を直接利用できるようになりました。

複数のリソースを宣言する方法

tryブロック内では複数のリソースを同時に宣言できます。try初期化ブロックには任意の数のリソースを記述することが可能で、nullまたは非nullのいずれのリソースも扱えます。

以下の例では、try-with-resourcesステートメント内で複数のリソースを宣言しています。

コード例

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;

public class MultipleResourcesTest {
    public static void main(String args[]) throws IOException {
        System.out.println(readData("test"));
    }
    static String readData(String message) throws IOException {
        try(Reader inputString = new StringReader(message);
            BufferedReader br = new BufferedReader(inputString)) {
            return br.readLine();
        }
    }
}

実行結果

test

このように、リソース同士をセミコロン(;)で区切ることで、1つのtry-with-resourcesステートメント内に複数のリソースを宣言できます。各リソースは宣言された順序とは逆の順序で自動的にクローズされるため、finallyブロックで明示的にclose()メソッドを呼び出す必要がなく、リソースリークを防ぎながらコードを簡潔に保つことができます。

  1. Javaで例外を再スローする方法をわかりやすく解説

    Javaプログラミングでは、catchブロックで捕捉した例外を再度スロー(再スロー)する必要がある場面に出会うことがあります。たとえば、catchブロック側ではその例外を適切に処理できず、より上位の呼び出し元に処理を委ねたい場合などです。再スローを行うと、最初にスローされた例外オブジェクトがそのまま投げ直されます。ここで重要なのは、再スロー式が実行される時点で、その例外はすでに現在のスコープで捕捉済みであるという点です。そのため、再スローされた例外は現在のスコープ内のcatchブロックでは処理されず、一つ外側のtryブロックへと伝播していきます。そして、その外側のtryブロックに対応するcat

  2. JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説

    このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ