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()メソッドを呼び出す必要がなく、リソースリークを防ぎながらコードを簡潔に保つことができます。
-
Javaで例外を再スローする方法をわかりやすく解説
Javaプログラミングでは、catchブロックで捕捉した例外を再度スロー(再スロー)する必要がある場面に出会うことがあります。たとえば、catchブロック側ではその例外を適切に処理できず、より上位の呼び出し元に処理を委ねたい場合などです。再スローを行うと、最初にスローされた例外オブジェクトがそのまま投げ直されます。ここで重要なのは、再スロー式が実行される時点で、その例外はすでに現在のスコープで捕捉済みであるという点です。そのため、再スローされた例外は現在のスコープ内のcatchブロックでは処理されず、一つ外側のtryブロックへと伝播していきます。そして、その外側のtryブロックに対応するcat
-
JavaでJSONをパース(解析)する方法|org.json・Gson・JsonPathの使い方を解説
このチュートリアルでは、JavaでJSONを解析(パース)する方法を、複数のライブラリの使い方とあわせて解説します。 JSONとは「JavaScript Object Notation」の略称で、JavaScriptのサブセットをベースとした軽量なデータ形式です。 データ交換フォーマットとして広く普及しており、Webプログラミングにおいて不可欠な技術となっています。本記事では、org.jsonライブラリを使ったJSONのパース方法を中心に紹介します。 まず基本をおさらいしましょう。JSONオブジェクトは「キーと値のペア」から構成される順序のない集合です。一方、JSON配列は値が順序付けて格納さ