Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.概述

在Java 7中引入的尝试资源支持 - 允许我们声明要在A中使用的资源尝试块保证资源在执行该块后将关闭。

宣布的资源必须实施可容易旋转界面。

2.使用尝试 - 资源

简单地放置,要自动关闭,资源必须在内部声明并初始化尝试, 如下所示:

尝试(printwriter writer = new printwriter(新文件(“test.txt”))){writer.println(“Hello World”);}

3.更换尝试-抓住 - 最后尝试 - 资源

使用新的简单明了明显的方法尝试 - 资源功能是替换传统和冗长尝试捕获 - 最后堵塞。

让我们进行比较以下代码样本 - 首先是一个典型的尝试捕获 - 最后块,然后是新方法,使用等效的尝试 - 资源块:

扫描仪扫描仪= null;尝试{扫描仪=新扫描仪(新文件(“test.txt”));while(scanner.hasnext()){system.out.println(scanner.nextline());catch(filenotfoundexception e){e.printstacktrace();最后{if(扫描仪!= null){scanner.close();}}

以下是使用尝试资源的超简洁的解决方案:

尝试(扫描仪扫描仪=新扫描仪(新文件(“test.txt”)))){welt(scanner.hasnext()){system.out.println(scanner.nextline());catch(filenotfoundexception fnfe){fnfe.printstacktrace();}

这是您可以进一步探索的地方扫描器班级

4.尝试 - 资源有多个资源

可以在a中声明多个资源尝试 - 资源通过用分号分隔它们来阻止:

尝试(扫描仪扫描仪=新扫描仪(新文件(“testRead.txt”)); printwriter writer = new printwriter(新文件(“testwrite.txt”))){welt(scanner.hasnext()){writer.print(scanner.nextLine());}}

5.定制资源可容易旋转

构建一个正确处理的自定义资源尝试 - 资源块,班应该实施关闭或者可容易旋转接口,并覆盖关闭方法:

公共类MyResource实现可容易旋转的{@override public void close()抛出异常{system.out.println(“关闭myresource”);}}

6.资源结束订单

首先定义/获得的资源将结束;让我们来看看这个行为的一个例子:

资源1:

公共类AutoCloseaBleresourcesFirst实现可容易旋转{public autocloseableresourcesfirst(){system.out.println(“构造函数 - > autocloseableresources_first”);public void dosomething(){system.out.println(“something  - > autocloseableresources_first”);@override public void close()抛出异常{system.out.println(“closed autocloseableresources_firsts_first”);}}

资源2:

公共类AutocloseaBleresourcessecond实现可容易旋转{public autocloseableresourcessecond(){system.out.println(“构造函数 - > autocloseableresources_second”);public void dosomething(){system.out.println(“something  - > autocloseableresources_second”);@override public void close()抛出异常{system.out.println(“closed autocloseableresources_second”);}}

代码:

私有voiderofcloseResourceResource()抛出异常{try(autocloseableresourcesFirstSFRST AF = New AutoCloseablerEourcesFirst(); autocloseableresourcessecond as = new autocloseableresourcessecond()){af.dosomething();as.dosomething();}}

输出:

构造函数 - > autocloseableresources_first
构造函数 - > autocloseableresources_second
something - > autocloseableresources_first
something - > autocloseableresources_second
封闭的autocloseableresources_second.
封闭的autocloseableresources_first.

7。抓住最后

一种尝试 - 资源堵塞仍然可以拥有抓住最后- 它将与传统的方式与传统的方式相同尝试堵塞。

8. Java 9:有效的决赛变量

在Java 9之前,我们只能在A内使用新的变量尝试 - 资源堵塞:

尝试(扫描仪扫描仪=新扫描仪(新文件(“testRead.txt”)); printwriter writer = new printwriter(新文件(“testwrite.txt”))){//省略}

如上所示,在声明多个资源时,这尤其赘述。作为Java 9和作为的一部分19EP 213.我们现在可以使用最终的甚至有效地决赛A内的变量尝试 - 资源堵塞

最终扫描仪扫描仪=新扫描仪(新文件(“testRead.txt”));printwriter writer = new printerwriter(新文件(“testwrite.txt”))尝试(扫描仪;写入器){//省略}

简单地,如果在第一个分配后没有改变,则变量是有效的,即使它没有明确标记为最终的

如上所示,扫描器宣布变量最终的明确地,所以我们可以用它尝试 - 资源堵塞。虽然作家变量不是明确的最终的,第一个分配后它不会改变。因此,我们被允许使用作家变量也是如此。

9.结论

在本文中,我们讨论了如何使用试用资源,如何更换尝试抓住, 和最后随着尝试 - 资源,建立自定义资源可容易旋转和资源关闭的订单。

完整源代码对于该示例可用这个github项目

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!