JDK 7 中的 Try-With-Resource
这次的图片是「雪后山上徒步旅行者」,来自 Dino Reichmuth 之手,摄影于「瑞士 · 菲舍塔尔 · 阿莱奇冰川」,阿莱奇冰川是阿尔卑斯山脉最大的冰川,是世界文化遗产少女峰-阿莱奇区域的中心部分。可惜的是,与瑞士其他冰川一样,越来越短了。
JDK 7 中新增了对 Try-With-Resources 的支持,简单来讲,即可以在 try 的代码执行完毕后,对资源进行自动的释放,前提是资源实现了 AutoCloseable 接口。
Java IO 流体系中,Reader 和 Writer 都实现了 Closeable 接口,Closeable 继承自 AutoCloseable 接口,所以在 JDK 7 以及之后,对流的操作代码可以简化成这样:
1 | try (PrintWriter writer = new PrintWriter(new File("test.txt"))) { |
这里,写法上稍微不同,资源必须在 try 中声明和初始化,才会自动关闭。
如果有多个资源,直接在 try 里面加分号分隔。
1 | try (Scanner scanner = new Scanner(new File("testRead.txt")); |
上面两个读写操作,都可以安全的释放资源,这里可以做个试验,看哪个资源先被释放。
1 | // 首先来自定义一个资源,实现 AutoCloseable 接口 |
可以看到,后申明的资源,最先被释放。
try-with-resources 代码块和传统的 try 模块一样,仍然可以使用 catch 和 finally 代码块。
Title: JDK 7 中的 Try-With-Resource
Author: mjd507
Date: 2018-03-13
Last Update: 2024-01-27
Blog Link: https://mjd507.github.io/2018/03/13/JDK-7-Try-With-Resource/
Copyright Declaration: This station is mainly used to sort out incomprehensible knowledge. I have not fully mastered most of the content. Please refer carefully.