Java 7为完成使用后需要关闭的资源(例如文件,流,数据库连接和套接字)提供了更好的资源管理。 这种语言构造称为try-with-resources语句。 完成这项工作的机制称为AutoCloseable接口。 Java 7资源类均实现此接口。 该接口的签名如下所示:

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

它声明了一个方法close(),该方法在try-with-resources语句管理的对象上自动调用。

尽管Java 7资源类实现了此接口,但是您使用的库在很多时候都不会这样做,因为库没有更新为使用AutoCloseable接口,或者项目无法简单地更新为较新的版本。

大多数情况下,这很容易解决。 只是将应该能够参与try-with-resources语句的资源子类化。 以ITextRenderer(形成“飞碟”项目)为例。 使用ITextRenderer完成工作后,应调用finishPDF()方法。 通常,您将在finally块中执行此操作。 通过创建一个从ITextRenderer扩展的新类并实现AutoCloseable接口,该类可以参与自动资源管理。 AutoCloseableITextRenderer如下所示:

public class AutoCloseableITextRenderer extends ITextRenderer implements AutoCloseable {@Overridepublic void close() {super.finishPDF();}
}

扩展原始类最有意义,因为子类 ITextRenderer。 如果由于类是最终类而无法扩展,则可以使用composition。

这就是您将如何使用它:

try (final AutoCloseableITextRenderer iTextRenderer = new AutoCloseableITextRenderer()) {ByteArrayOutputStream out; // contains the data to be converted to PDF, not shown here.iTextRenderer.setDocumentFromString(new String(out.toByteArray()));iTextRenderer.layout();iTextRenderer.createPDF(pdfOutputStream);pdfOutputStream.flush();}

就这样。 请注意,我没有从AutoCloseableITextRenderer中的close()方法引发异常。 AutoCloseable接口的Javadoc对此说明如下:

虽然声明此接口方法引发{@code Exception},但强烈建议实现者声明{@code close}方法的具体实现以引发更具体的异常,或者,如果close操作不会失败,则根本不引发任何异常。

参考:来自Jamie Craane博客博客的JCG合作伙伴 Jamie Craane的Java 7 try-with-resources 。

翻译自: https://www.javacodegeeks.com/2013/07/java-7-try-with-resources.html

Java 7试用资源相关推荐

  1. 试用期java_Java试用资源

    试用期java Today we will look into Java Try with Resources. One of the Java 7 feature is try-with-resou ...

  2. Java官方相关资源文件的获取教程

    Java官方相关资源文件的获取教程 说明 类库源文件的获取 JDK文档的下载 阅读联机API文档 Java语言和虚拟机规范:Java Language and Virtual Machine Spec ...

  3. jodd忽略ssl证书_关于java访问https资源时,忽略证书信任问题

    java程序在访问https资源时,出现报错 sun.security.validator.ValidatorException: PKIX path building failed: sun.sec ...

  4. Java中获取资源文件路径

    Java路径 Java中使用的路径,分为两种:绝对路径和相对路径.具体而言,又分为四种: 一.URI形式的绝对资源路径 如:file:/D:/java/eclipse32/workspace/jbpm ...

  5. 2022年最新整理,动力节点Java自学全套资源

    今天整理了java开发的学习路线和相关的学习视频资源,非常适合零基础入门java的小伙伴,希望大家在学习的时候,能够节省时间. 这里有你需要掌握的所有前沿技术,史上最全的Java学习路线资源,从基础到 ...

  6. Java获取静态资源文件路径

    Java获取静态资源文件路径 ​ 开发中经常会有文件相关的操作,比如说文件的查找,文件的存储.但是在使用中往往会因为路径问题耽误大量的开发时间.在实际中常常通过File file = new File ...

  7. 悟空CRM 开源版java版 uniapp资源

    悟空CRM 开源版java版 uniapp资源 需要私聊

  8. java是所有资源文件的索引_《Java程序设计》课程教学资源索引

    <Java程序设计>课程教学资源索引 说明: 本课程针对零Java编程基础的计算机专业学生,前提是学过C语言. 课程主要讲授J2SE,教学目的是带领学生迈入Java开发的大门,初步理解和把 ...

  9. Android APK反编译得到Java源代码或资源文件

    一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...

最新文章

  1. springboot读取linux文件_SpringBoot读取Resource下文件的几种方式
  2. 【转载】使用javassist动态注入代码
  3. [Java基础]Stream流的收集操作
  4. 【CodeForces - 675C】Money Transfers(思维,前缀和)
  5. retinex 的水下图像增强算法_图像增强论文:腾讯优图CVPR2019
  6. 百度正用谷歌AlphaGo,解决一个比围棋更难的问题 | 300块GPU在燃烧
  7. 仿蜜雪冰城点餐小程序
  8. app三种工具的元素定位与swipe 滑动
  9. 去雾算法学习-----Automatic recovery of the atmospheric light hazy image(fattal 大气光值自适应去雾算法)阅读笔记
  10. eclipse安装wtp
  11. 多视几何 003 二次曲线
  12. 为什么我的word一联网打开就很慢,不联网时打开却正常,打印设置问题导致office打开慢
  13. 好用的工具推荐一下js美化代码
  14. 手机账本软件哪些可以实现随手记录
  15. 推荐一款国内首个开源线上全链路压测平台
  16. T3054 高精度练习-文件操作 codevs
  17. 【软件测试-7】 自动化测试selenium篇(一)
  18. 修改Win7工具栏资源管理器打开后的默认路径
  19. Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
  20. 中国养老公寓行业深度调研及未来需求预测分析报告2022年版

热门文章

  1. 基础笔试编程题(jz)
  2. Flex布局 让你的布局更完美
  3. Ubuntu下apt-get方式Git的安装、配置和更新
  4. annotations_Spring Annotations我从来没有机会使用第2部分:@ConfigurationProperties
  5. spring 注释_Spring @Value注释
  6. jvm虚拟机内存结构_JVM体系结构101:了解您的虚拟机
  7. java 哈希算法_选择Java密码算法第1部分-哈希
  8. 基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...
  9. cks32和stm32_cks子,间谍,局部Mo子和短管
  10. 使用Selenium WebDriver测试自动化的22条实用技巧