一 概述
最近在查看 Android 源码时候发现有些类实现了 AutoCloseable 接口,这个接口很生疏,所以搜了下资料,学习了下,下面做个总结。
二 AutoCloseable接口由来
从AutoCloseable 的注释可知它的出现是为了更好的管理资源,准确说是资源的释放,当一个资源类实现了该接口 close 方法,在使用 try-catch-resources 语法创建的资源抛出异常后,JVM 会自动调用 close 方法进行资源释放,当没有抛出异常正常退出 try-block 时候也会调用 close 方法。像数据库链接类 Connection,io 类 InputStream 或 OutputStream 都直接或者间接实现了该接口。
2.1 使用AutoCloseable之前资源管理方式
如上代码创建了两个资源,在try-catch-finally的finally里面进行手动进行资源释放,释放时候还需要进行catch掉异常,这几乎是经典资源使用的方式,那么既然资源管理都是一个套路,那么为何不做到规范里面那?所以AutoCloseable诞生了。
2.2 使用AutoCloseable进行资源管理
如上图使用jdk1.7新增的try-catch-resources语法在try的()内部创建资源,创建的资源在退出try-block时候会自动调用该资源的c