Java 9 향상된 Try-with-resources: 더 깔끔한 코드
try-with-resources 문은 하나 이상의 리소스가 적절히 선언된 try 문입니다. 여기서 리소스는 더 이상 필요하지 않을 때 닫혀야 하는 객체입니다. try-with-resources 문은 각 리소스가 요구 사항 완료 후 닫히도록 보장합니다. java.lang.AutoCloseable 또는 java.io.Closeable 인터페이스를 구현한 모든 객체를 리소스로 사용할 수 있습니다.
Java 9 이전에는 리소스를 try 이전이나 try 문 안에 선언해야 했습니다. 다음 예제에서 BufferedReader를 리소스로 사용해 문자열을 읽고 BufferedReader를 닫습니다.
Java 7/8 스타일 (리소스를 try 안에서 다시 선언)
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 문 안에 리소스 br1을 선언하고 사용해야 했습니다. Java 9에서는 br1을 더 이상 선언할 필요가 없고 다음 프로그램으로 같은 결과를 얻습니다.
Java 9 스타일 (이미 선언된 변수 직접 사용)
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