Java9-try-with-resources-improvement
提供:Dev Guides
Java 9-リソースの試用の改善
try-with-resourcesステートメントは、1つ以上のリソースが正式に宣言されたtryステートメントです。 ここで、リソースは、不要になったら閉じる必要があるオブジェクトです。 try-with-resourcesステートメントは、要件の終了後に各リソースが確実に閉じられるようにします。 java.lang.AutoCloseableまたはjava.io.Closeableインターフェースを実装するオブジェクトは、リソースとして使用できます。
Java 9より前では、リソースはtryの前またはtryステートメント内で宣言され、以下の例に示されています。 この例では、BufferedReaderをリソースとして使用して文字列を読み取り、BufferedReaderを閉じます。
Tester.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class Tester {
public static void main(String[] args) throws IOException {
System.out.println(readData("test"));
}
static String readData(String message) throws IOException {
Reader inputString = new StringReader(message);
BufferedReader br = new BufferedReader(inputString);
try (BufferedReader br1 = br) {
return br1.readLine();
}
}
}
出力
test
ここでは、try statment内でリソースbr1を宣言してから使用する必要があります。 Java9では、br1を宣言する必要がなくなり、次のプログラムでも同じ結果が得られます。
Tester.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
public class Tester {
public static void main(String[] args) throws IOException {
System.out.println(readData("test"));
}
static String readData(String message) throws IOException {
Reader inputString = new StringReader(message);
BufferedReader br = new BufferedReader(inputString);
try (br) {
return br.readLine();
}
}
}
出力
test