栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中AutoCloseable接口与try-with-resources语句自动释放资源

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中AutoCloseable接口与try-with-resources语句自动释放资源

程序需要使用各种资源,例如数据库连接,IO流,通常做法是在finally代码块中编写释放资源的代码。从JDK1.7以后,提供了自动释放资源的方法

try-catch-finally语句

在finally代码块中释放资源,该操作重复度高,且使代码显得冗长。

FileInputStream fis = null;
try {
    fis = new FileInputStream("xxx.txt");
} catch (FileNotFoundException e) {
    e.printStackTrace();
} finally {
    if (fis != null){
        try {
            fis.close(); //释放资源
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
AutoCloseable接口

AutoCloseable是JDK1.7版本后提供的接口,用于搭配try-with-resources语句自动释放资源,需要资源对象实现该接口,该接口只有一个方法,看看源码注释的第一段就懂了。

public interface AutoCloseable {
    void close() throws Exception;
}

以及它的子接口,IO包下的Closeable接口

public interface Closeable extends AutoCloseable {
    public void close() throws IOException;
}
//输入流类实现了该接口,所以可以搭配try-with-resources语句自动释放资源
public abstract class InputStream implements Closeable {}
try-with-resources语句

FileInputStream继承自InputStream,而InputStream实现了Closeable接口,所以可以搭配该语句使用。
在try语句的括号内获取资源,使用完毕后会自动释放,前提是实现了AutoCloseable接口或者Closeable接口,代码简洁了不少。

//在try的括号内获取资源
try (FileInputStream fis = new FileInputStream("xxx.txt")){
	//文件读取操作
} catch (Exception e) {
    e.printStackTrace();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号