Java try-with-resources
Конструкция try-with-resources используется для управления ресурсами, которые должны быть закрыты после работы с ними. Для работы автоматического закрытия необходимо, чтобы класс ресурса реализовывал интерфейс AutoCloseable.
Замена try–catch-finally на try-with-resources
PrintWriter writer = null;
try {
writer = new PrintWriter(new File("test.txt"))
writer.println("Hello World");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close()
}
}try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {
writer.println("Hello World");
} catch (IOException ex) {
ex.printStackTrace();
}
Сигнатура интерфейса AutoCloseable
public interface AutoCloseable {
void close() throws Exception;
}
Пример кастомного класса с AutoCloseable
public class MyResource implements AutoCloseable {
public .print(String str) {
System.out.println(str)
}
@Override
public void close() throws Exception {
System.out.println("Closed MyResource");
}
}try (MyResource myResource = new MyResource()) {
myResource.print("Hello World");
}