Оператор try-with-resources является оператором 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
Здесь нам нужно объявить ресурс br1 в try statment и затем использовать его. В Java9 нам больше не нужно объявлять br1, и следующая программа даст тот же результат.