1、AutoCloseable接口的介绍
- 从AutoCloseable的注释可知它的出现是为了更好的管理资源,准确说是资源的释放。
- 当一个资源类实现了该接口的close方法,在使用try-catch-resources语法后,JVM会自动调用close方法进行资源释放。
- 当没有抛出异常,正常退出try-block时候也会调用close方法。
像数据库链接类Connection,io类InputStream或OutputStream都直接或者间接实现了该接口
2、AutoCloseable接口代码示例
package com.demo.closeable;
/**
* 从AutoCloseable的注释可知它的出现是为了更好的管理资源,准确说是资源的释放。
* 当当一个资源类实现了该接口的close方法,在使用try-catch-resources语法后,JVM会自动调用close方法进行资源释放。
* 当没有抛出异常,正常退出try-block时候也会调用close方法。
* 像数据库链接类Connection,io类InputStream或OutputStream都直接或者间接实现了该接口
*/
public class MyAutoCloseable {
public static void main(String[] args) {
try (A a = new A()) {
System.out.println(a.getNum());
int i = 5;//i==10 or i==0
System.out.println(5 / i);
} catch (Exception e) {
System.out.println("抛出了异常!");
}
}
}
class A implements AutoCloseable {
private int num = 100;
@Override
public void close() throws Exception {
System.out.println("这里做资源关闭的事情!");
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
运行结果