jdk1.7新增自动关闭接口AutoCloseable

1 AutoCloseable 接口

这是JDK1.7 的新增语法。帮助你自动关闭一些资源。可能你还不知道这个接口
image_1bf3bdg6r6da1bha17s9cm81bej13.png-90.6kB

这个接口好就好在,只有一个方法,名叫 close(), 而这正好有是我们各个资源关闭的方法名,所以使用起来相当方便,因为名称一样,代码兼容。

JDK8 中就在很多地方应用了这个接口,比如 Stream 继承了 BaseStream,而 BaseStream 则继承了 AutoCloseable 这个接口。

image_1bf3avqeh1sjr8061aa9kr1bpc9.png-45.6kB

这个接口的说明很清楚,当你在使用 try-with-resources block 这种语法调用来进行资源获取的时候,在 block 退出之后自动关闭

try-with-resources block 代码块,就是将资源的声明,放在 try 里面; 可以看后面的代码示例

你不用像之前写 finally{} 代码那样的进行关闭。就不会有资源未被释放的问题。

2 测试代码

简单测试代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* Created by charleszhu on 2017/5/2.
*/
public class AutoCloseAbleTest implements AutoCloseable{
public void doSth() {
System.out.println("doStm");
}
@Override
public void close() throws Exception {
System.out.println("Close() 看到没,我被吊了");
}
public static void main(String[] args) throws Exception {
/**
* try-with-resources 语法块
*/
try(AutoCloseAbleTest autoCloseAbleTest = new AutoCloseAbleTest()) {
autoCloseAbleTest.doSth();
}
}
}

运行一下,结果如下:
image_1bf3bcj84433l37sm41vrf10dhm.png-120.6kB

朱老师&敏哥 wechat
有惊喜,朋友🙄
我要拿铁不加糖.