java7(3)——增强的catch之自动释放资源

  跟mutilcatch一样,java7提供了自动释放资源的方法,但还是很少看到人使用,估计是麻烦去重写close方法。不过jdk内部一些类已经改成使用增强的catch来释放资源的写法,所以我们有必要了解一下这个功能。

  顾名思义,自动释放资源就是我们不用再在fianlly里面去close掉资源了,close这个步骤有程序底层自动完成。

  举个栗子:

  【要自动释放资源的类】:

1 public class CustomResource implements AutoCloseable {
2
3  @Override
4    public void close() throws Exception {
5       System.out.println("资源已释放");
6    }
7 }

  观察可知,要让某类具有自动关闭资源的功能,首先必须实现AutoCloseable接口,其次重写其close方法。  

  【测试类】:

1  public void testAutoResource() throws Exception{
2     try(CustomResource c = new CustomResource()     //这里写资源的申请。
3     ){
4         System.out.println("使用资源"); // 这里写对资源的操作。
5     }
6  }

  用法是在try()里面 new 出 “自动释放资源类”。

  【结果打印】:

使用资源
资源已释放

java7(3)——增强的catch之自动释放资源,布布扣,bubuko.com

时间: 2024-10-21 18:39:09

java7(3)——增强的catch之自动释放资源的相关文章

Creator 自动释放资源总结

Creator 版本 :2.0.5 项目资源释放采用 creator 场景自动释放资源,但手动 cc.loader 加载的资源需要进行手动释放.释放过程中需要注意以下几点: 1.两个场景资源不要共用同一个资源(适用于大厅和子游戏) 2.prefab 上有 mask 与 spine 组件,释放之后.再次进入场景,图片会花屏.官方给出的解释就是这样设计的,不过之后creator版本修改这个问题 3.手动加载的资源也可以设置为让场景自动释放 加载prefab调用 cc.loader.setAutoRe

Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱

JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: ?  静态导入 ?  可变参数 ?  增强for循环 ?  自动拆装箱 ? 泛型 ? 枚举 由于泛型.枚举内容比较多,也最重要,之后单拿出来讲.这里先介绍前面四个简单而又实用的小特性. 1. 静态导入 所谓"静态导入"只不过是在普通的import语句中加入关键字static,例如: ?  非静态导入:import java.lan

JDK1.7中新增自动释放资源接口AutoCloseable

新增了try-with-resource 异常声明 在JDK7中只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用try-with-resource来实现异常处理和资源关闭 异常抛出顺序.在Java se 7中的try-with-resource机制中异常的抛出顺序与Java se 7以前的版本有一点不一样. 是先声明的资源后关闭 JDK7以前如果rd.readLine()与rd.close()(在finally块中)都抛出异常则只会抛出finally块中的异常,

try(){}自动释放资源,AutoCloseable

我们在使用资源的时候,必须关闭资源,比如使用jdbc连接或者inputStream的时候,必须在finally中将资源关闭.然而有的时候我们会忘记关闭资源.那么有没有更好的方法呢? SqlSession sqlSession = sqlSessionFactory.openSession() try { //...... }finally{ sqlSession.close(); } 从jdk1.7开始,   Java 7增强了try语句的功能——它允许在try关键字后跟一对圆括号,圆括号可以声

怎样增强MyEclipse的代码自动提示功能

步骤/方法 1 一 般在Eclipse ,MyEclipse代码里面,打个foreach,switch等 这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Visual Studio 里面是得到非常友好的代码提示的.实际上,Eclipse ,MyEclipse代码里面的代码提示功能默认的一般 是点“.”,一般是有了点“.”,才会有代码提示.原理:“Auto Activation triggers for java”这个选项就是指触发代码提示的的选项,把“.”

增强MyEclipse的代码自动提示功能

  一般在Eclipse ,MyEclipse代码里面,打个foreach,switch等 这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Visual Studio 里面是得到非常友好的代码提示的.实际上,Eclipse ,MyEclipse代码里面的代码提示功能默认的一般 是点".",一般是有了点".",才会有代码提示.原理:"Auto Activation triggers for java"这个选项

java7 异常处理增强

在Java 7发行版中,oracle在异常处理机制上也做了一些不错的更改.这些主要是改进的catch块和多余的throws子句.让我们看看他们是如何改变的. 1.改进了Java 7中的catch块 在此功能中,现在您可以在单个catch块中捕获多个异常.在Java 7之前,您只能在每个catch块中仅捕获一个异常.要指定期望的例外列表,使用竖线('|')字符.Java程序可在单个catch块中捕获多个异常. try { //Do some processing which throws Null

Spring学习之Aop的各种增强方法

AspectJ允许使用注解用于定义切面.切入点和增强处理,而Spring框架则可以识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5一样的注解,但并没有使用AspectJ的编译器或者织入器,底层依然使用SpringAOP来实现,依然是在运行时动态生成AOP代理,因此不需要增加额外的编译,也不需要AspectJ的织入器支持.而AspectJ采用编译时增强,所以AspectJ需要使用自己的编译器来编译Java文件,还需要织入器. 为了启用Spring对@AspectJ切面

SAP 中如何寻找增强

方法一.利用TCODE寻找增强(第二代的增强) 执行一个程序(源代码后附),在选择屏幕处输入你所需要增强的程序TCODE,执行後,就会出现一个列表,那里就有关于如何增强这个的绝大部分SMOD增强. 点击进去,自己手动寻找需要的增强. 这是第二代增强 方法二.利用系统函数寻找         MODX_FUNCTION_ACTIVE_CHECK 在这个FUNCTION的代码最后添加一个断点.执行需要增强的TCODE,如果有增强,就会自动跳入DEBUG界面.在DEBUG界面,查看f_tab字段,这里