Java9 - Try With Resources 改进
try-with-resources 语句是一个带有一个或多个资源的 try 语句。 这里的资源是一个对象,一旦不再需要它就应该关闭。 try-with-resources 语句确保每个资源在需求完成后关闭。 任何实现 java.lang.AutoCloseable 或 java.io.Closeable 接口的对象都可以用作资源。
在 Java9 之前,资源将在 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 语句中声明一个资源 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