Java中如何通过try优雅地释放资源?
时间紧迫,长话短说,今天,小明给大家同步一个知识点,使用try-with-resources来优雅地关闭资源。
1. 背景
其实,在JDK 7就已经引入了对try-with-resources的支持,它的主要作用就是解放小明和小明小伙伴们的双手,帮助我们自动释放使用过的资源(比如输入、输出流)。
2. 例子
如何才能使用这个自动关闭资源的骚操作呢?我们只需要在try内声明和初始化资源即可,如下所示:
这样,当我们写入文件时,只需要将心思放在输入的内容就行啦。
3.使用try-with-resources的好处
在很久很久以前,你是不是和小明一样每每操作输入流、输出流的时候,用的都是try-catch-finally代码块?
现在,答应我好嘛,作为小明的小伙伴,看完这篇文章后,再写代码时,不要再将就,务必使用try-with-resources会更小明(优雅)一些。
接下来,我们简单地做个比较:
之前的小明
点评
整体感觉很传统,很冗长。
现在的小明
点评
整体感觉很轻巧,很优雅。
4. 还可以控制多个资源哦
如果我们想一边控制输入、一边控制输出怎么办?
通通放进去!如图所示
5.幕后功臣:Closeable
为什么把资源放进try-with-resources,我们就可以束手旁观,高枕无忧呢?原来,要想合法进去try-with-resources,不被报警,是需要门票的:实现Closeable或AutoCloseable接口,并重写close方法。就像这样:
6.多个资源的情况下如何顺序关闭呢?
剧透:先创建的资源,最后关闭。
这个故事是这样讲的:小明和小红一起打王者荣耀……
小明:
小红:
全军出击:
故事纵览:
提问:结局是不是和剧透一致?
7. 补充
我们使用try-with-resources的时候不仅可以优雅地释放资源,而且还可以传统一些,照常使用catch和finally哦。
8. 总结
经过小明这么一番生动的讲解:
你是否知道了什么是try-with-resources?
你是否知道了如何用try-with-resources替换try-catch-finally?
你是否知道了AutoCloseable构建自定义资源以及关闭资源的顺序?
附Github源码地址:https://github.com/WhenCoding/coder-xiaoming
Java中如何通过try优雅地释放资源?的更多相关文章
- 让 Java 中 if else 更优雅的几个小技巧
对于一个高级 crud 工程师而言,if else 是写代码时使用频率最高的关键词之一,然而有时过多的 if else 会让我们优雅的 crud 代码显得不那么优雅,并且感到脑壳疼
- Java 8中处理集合的优雅姿势——Stream
在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便 ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
- Java中有关Null的9件事
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...
- 可惜Java中没有yield return
项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...
- 161027、Java 中的 12 大要素及其他因素
对于许多人来说,"原生云"和"应用程序的12要素"是同义词.本文的目的是说有很多的原生云只坚持了最初的12个因素.在大多数情况下,Java 能胜任这一任务.在本 ...
- 转!!Java中关于Null的9个解释(Java Null详解)
对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...
随机推荐
- windows服务搭建与删除简单介绍
安装windows服务: 1 VS的开发命令使用管理员权限打开, 2 installutl.exe /servicename="服务名称" "服务地址" 卸载 ...
- 五分钟用Docker快速搭建Go开发环境
挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...
- centOS6.5桌面版用不了中文输入法解决方案
1:centos6.5中 系统->首选项->输入法中选择“使用iBus(推荐)”,点击首选输入法n遍,没有任何效果. 2.我也弄了很多种方式包括用 yum install " ...
- angular 中嵌套 iframe 报错
错误如下 Error: unsafe value used in a resource URL context at DomSanitizationServiceImpl.sanitize... 解决 ...
- babel-loader配置
1.npm i @babel/core.@babel/preset-env.@babel/runtime.@babel/plugin-transform-runtime.@babel/plugin-p ...
- 【java I/O流总结】基于源码比较FileReader和BufferReader
上一篇博客中,测试分析了FileReader&FileWriter,和BufferWriter&BufferReader之间的性能对比.仅仅只是简单分析.现在我基于源码的角度,来分析B ...
- 《自拍教程51》Python_adb批量生成App版本表格
案例一:版本在软件研发阶段是很重要的, 不同的版本, 已修复的Bug也不一样, 所实现的功能不一样, Android终端产品正式版本发布前,项目经理除了确保系统版本确定无误外, 还会逐个验证所搭载的所 ...
- selenium 使用教程详解-java版本
第一章 Selenium 概述 1.1.Selenium 发展史 Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗 ...
- 手把手教你学Git
Git 使用手册独家实战 0.查看本机公钥 步骤: 1.进入.ssh目录 cd ~/.ssh 2.找到id_rsa.pub文件 ls / ll 3.查看文件 cat id_rsa.pub JackFe ...
- 使用 xposed 突破饿了么 ssl pining
作为一个对各种黑科技充满好奇心的前端工程师,这一次盯上了现在的外卖大佬-饿了么.这篇文章记录了抓包饿了么过程中碰到的问题,以及解决方案,希望能够大家带来一点收获. 工具 夜神模拟器 + charles ...