开发手册 欢迎您!
软件开发者资料库

Java 9 - 尝试使用资源改进

Java 9尝试使用资源改进 - 从简单和简单的步骤学习Java 9,从基本概念到高级概念,包括概述,环境设置,模块系统,REPL(JShell),改进的JavaDocs,Multirelease JAR,Collection Factory方法,专用接口方法,Process API,Stream API,Try with Resources,Optional Class,CompletableFuture API改进,Enhanced @Deprecated Annotation,Inner Class Diamond Operator,Multiresolution Image API,Miscellaneous Features。

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

这里我们需要在try statment中声明资源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