今天读代码发现一个try-catch与我们平时写的方式不太一样,如下:

try (ZipFile apkFile = new ZipFile(apk)) {...
} catch (Exception e) {e.printStackTrace();
}

那么这种try(){}语法的意义是什么呢?

首先小括号中的代码会在最前执行,这样与放到大括号中有什么区别?

简单来说小括号中创建的对象会在try块退出时自动close,比如上面的ZipFile,必须手动关闭否则导致泄漏

这就需要写一个final语块,即:

try  {ZipFile apkFile = new ZipFile(apk)...
} catch (Exception e) {e.printStackTrace();
}
final{apkFile.close();
}

但是如果使用try(){}形式的话就没必要写final语块了。

所以这也决定了在小括号中创建的对象必须是Closeable类型,比如ZipFile,InputStream等等,

只有实现了这个接口才有close函数

关注公众号:BennuCTech,获取更多干货

java中try-catch另外一种用法:try(){}语法使用相关推荐

  1. Java中final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...

  2. final关键字_夯实基础:Java中final关键字的几种用法

    导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...

  3. 面向对象篇(OOP)--05 Java中static关键字的四种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...

  4. Java中的this关键字(三种用法)

    this关键字的三种用法: 通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突问题. 实例: public class Student {//定义四个成员变量String ...

  5. Java中this关键字的几种用法

    1.     当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量.(this是当前对象自己) 如:public class Hello { String s = &q ...

  6. Java中for循环的几种用法

    参考一些博客整理的资料笔记,以备后续查看. 目录 1 常用的几种方法 1.1 for(; ; ) 1.2 Collection for( Iterator i=kindsList.iterator() ...

  7. Java中关于枚举的7种用法

    1.定义常量: public enum Color {RED,ORANGE,YELLOW,GREEN,INDIGO,BLUE,PURPLE } 2.用于switch: enum Color {RED, ...

  8. Java中Array.sort()的几种用法[转]

    转自: http://www.cnblogs.com/IT-sky/p/3749859.html?utm_source=tuicool&utm_medium=referral void jav ...

  9. java里break的使用方法_Java中break的第三种用法说明

    在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...

  10. java this()函数_java中this关键字的三种用法

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...

最新文章

  1. 一起学nRF51xx 11 -  ficr
  2. 【机器学习】关于机器学习模型可解释(XAI),再分享一招!
  3. VTK:绘图之ChartsOn3DScene
  4. 设计模式笔记3:设计模式几大原则
  5. EntityManager的使用
  6. 基于 Docker 的微服务架构
  7. android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版
  8. 基于Linux命令行终端的ftp客户端程序
  9. html的article标签,介绍一个html5做的网站,以及article标签的用法
  10. python爬虫学习之使用BeautifulSoup库爬取开奖网站信息-模块化
  11. cmakelists语法_cmake使用教程(六)-蛋疼的语法
  12. 海湾汉字编码表全部_汉字编码对照表
  13. SpringMVC 406状态码
  14. 9、(九)外汇交易技术术语表
  15. 笔记本 无线网联网 win10系统 ,台式机木有无线网卡,通过一根网线连接两台电脑,使台式机联网。...
  16. 固态硬盘安装操作系统
  17. 2022.1.9 力扣-周赛-统计追加字母可以获得的单词数
  18. HSQLDB数据库使用详解(入门)及快速使用
  19. 【TypeError: Descriptors cannot not be created directly. 】解决方法
  20. 光电耦合器的参数大全

热门文章

  1. 求二维数组的子数组中的最大值!
  2. EonerCMS——做一个仿桌面系统的CMS(二)
  3. 淘宝登货员1.02(重要升级)
  4. Oracle的下载安装教程以及所出现的问题
  5. Android:日常学习笔记(6)——探究活动(3)
  6. 从零开始学习OpenCL开发(一)架构
  7. HTML5主要新增标签
  8. 在Windows 2003中集成RAID卡驱动
  9. net中一些所封装的类
  10. 百余名欧洲议会议员发函 呼吁英国留在欧盟