转载 

Java 9 Try-With-Resources 增强

分类:java    272人阅读    IT小君  2023-04-09 19:59

在 Java 7 和 8 中,我们可以使用 try-with-resource 块来声明可关闭的资源。任何实现的对象都java.lang.AutoCloseable可以在 try-with-resource 块中使用。以下是执行此操作的 Java 7/8 语法:

 try(InputStream stream1 = new InputStream(....);
     InputStream stream2 = new InputStream(....)){
    ....
 }

当上述块终止时,无论是正常终止还是由于异常终止,close()每个流对象的方法将按照它们声明的顺序自动调用。

 

Java 9 在使用 try-with-resource 块时提供了额外的灵活性,现在我们不再有在 try 括号内声明每个可关闭对象的限制,我们只需要使用它们的引用:

 InputStream stream1 = new InputStream(....);
 InputStream stream2 = new InputStream(....);
    ....
 try(stream1;stream2){
    ....
 }

例子

 

为简单起见,我们将使用 String 对象作为 InputStream 源。我们还将覆盖 close() 方法以了解它何时被调用。

public class TryWithResourceExample {
  public static void main(String[] args) throws IOException {
      InputStream inputStream = getInputStream();

      try (inputStream) {
          String s = new String(inputStream.readAllBytes());
          System.out.println(s);
      }

      System.out.println("after try-with-resource block");
  }

  public static InputStream getInputStream() {
      return new ByteArrayInputStream("test string".getBytes()) {
          @Override
          public void close() throws IOException {
              System.out.println("closing");
              super.close();
          }
      };
  }
}

 

输出

 

test string
closing
after try-with-resource block
点击广告,支持我们为你提供更好的服务

中小型创意设计服务公司网站模板

响应式咖啡饮品宣传网站模板

网页设计开发公司网站模板

canvas炫酷鼠标移动文字粒子特效

小众时尚单品在线电子商务网站模板

有机水果蔬菜HTML5网站模板

HTML5现代家居装潢公司网站模板

jQuery右端悬浮带返回顶部特效

html5图标下拉搜索框自动匹配代码

html5 canvas进度条圆环图表统计动画特效

HTML5数字产品服务公司网站模板

HTML5 Canvas竖直流动线条背景动画特效

html5 svg夜空中星星流星动画场景特效

响应式太阳能能源公司网站模板

js+css3抽奖转盘旋转点餐代码

css+js实现的颜色渐变数字时钟动画特效

现代时尚家具公司网站模板

响应式时尚单品在线商城网站模板

html5 canvas彩色碎片组合球形旋转动画特效

css鼠标跟随文字模糊特效

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务