Java 7에서 try-with-resources 구문을 소개했다.
이 구문은 try블럭을 시작함과 동시에 자원을 할당하며 try블럭이 끝나면 자동으로 자원을 해제한다.
우리는 보통 try-catch-finally에서 finally에 자원을 해제하곤 했다.
FileInputStream fis;
try {
fis = new FileInputStream(“file.txt”);
}
catch(Exception e) {
...
}
finally {
fis.close();
}
Java 7부터는 자동으로 자원을 해제해주는 방법이 생겼다.
try(FileInputStream fis = new FileInputStream(“file.txt”)) {
// do something
}
catch(Exception e) {}
물론 try 안에 두 개 이상을 선언하는 것도 가능하다.
try(FileInputStream fis = new FileInputStream(“file.txt”);
BufferedInputStream br = new BufferedInputStream(fis)
)
{
// do something
}
그러나 모든 자원을 자동으로 해제시켜주는 것은 아니다.
해당 클래스가 AutoCloseable 이라는 인터페이스를 구현한 클래스이어야만 한다.
package java.lang;
public interface AutoCloseable {
void close() throws Exception;
}
따라서, 임의로 Autocloseable을 구현하여 class를 만드는 경우에도 try-with-resources를 사용할 수 있다.
'Backend > Java' 카테고리의 다른 글
직렬화 (0) | 2021.06.12 |
---|---|
추상클래스와 인터페이스 (0) | 2021.06.11 |
Generics (0) | 2021.04.27 |
Java 버전별 특징 (0) | 2021.04.27 |
Stream (0) | 2021.04.27 |