Closeable和AutoCloseable有哪些区别
这篇文章主要介绍了Closeable和AutoCloseable有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联服务项目包括和田县网站建设、和田县网站制作、和田县网页制作以及和田县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,和田县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到和田县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
导读:我们知道,在java中jvm虚拟机会自动去调用gc(垃圾回收器)去回收堆中没有被引用的对象,至于什么时候回收,是不确定的,同时有些是用到其他资源,jvm也不会进行回收,类似Io流中的FileInputStream使用到了硬盘资源,垃圾回收器是不会去回收的,因此,必须手动关闭掉。我们进行手动的编写close()方法进行关闭,然而,每次这些写会造成代码冗余不优雅,JDK中对于释放资源有Closeable和AutoCloseable可以使用,以下为详解。、
Closeable
Closeable源码
使用close需要注意
在java.io.包下 InputStream,outputStream, Reader, Writer 等基类都实现了Closeable接口,因为每次的IO操作结束之后都要去释放资源。
如果在调用此方法之前 stream已经关闭 ,则方法失效;
建议先关闭内部的资源,并标记为已关闭;
优先抛出IO异常;
AutoCloseable
AutoCloseable接口位于java.lang包下,从JDK1.7开始引入。
由于位于java.lang包下,可以针对于所有实现该接口的流,而closable本身也实现了该接口,java的io流间接性的可以自动关闭接口,也就是说从jdk1.7开始,不需要手动去关流。
AutoCloseable源码
{try}-with-resources的使用注意
在1.7之前,我们通过try{} finally{} 在finally中释放资源。
在finally中关闭资源存在以下问题:
自己要手动写代码做关闭的逻辑;
有时候还会忘记关闭一些资源;
关闭代码的逻辑比较冗长,不应该是正常的业务逻辑需要关注的;
很显然是很繁琐的。jdk1.7之后采用{try}-with-resources的解释
将可能抛出异常的代码块放入到try块中,在try结束的时候,会自动将这些资源关闭(调用close方法)。
{try}-with-resources关键点
带资源的try语句的3个关键点:
由带资源的try语句管理的资源必须是实现了AutoCloseable接口的类的对象。
在try代码中声明的资源被隐式声明为final。
通过使用分号分隔每个声明可以管理多个资源。
这样看起来是不是简单,舒服很多
感谢你能够认真阅读完这篇文章,希望小编分享的“Closeable和AutoCloseable有哪些区别”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
当前标题:Closeable和AutoCloseable有哪些区别
浏览地址:http://myzitong.com/article/pchdpe.html