AutoCloseable 接口| 学习笔记

简介: 快速学习 AutoCloseable 接口

开发者学堂课程【Java高级编程AutoCloseable 接口】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/20/detail/316


AutoCloseable 接口

AutoCloseable 主要是用于日后进行资源开发的处理上,以实现资源的自动关闭(释放)

例如:在以后进行文件、网络、数据库开发的过程之中由于服务器的资源有限,所以使用之后一定要关闭资源,这样才可以被更多的使用者所使用。

为了更好的说明资源的问题,将通过一个消息的发送处理来完成。

一.范例:手工实现资源处理

package cn.mldn . demo;

public class JavaAPIDemo {

public static void main(String[ ] args) {

NetMessage nm_= new NetMessage("www.mldn.cn") ; //定义要发送的处理

if (nm.open()) { //是否打开了链接

nm.send(); //消息发送

nm.close(); //关闭链接

}

}

}

interface IMessage {

public void send(); //消息发送

}

class NetMessage implements IMessage { //实现消息的处理机制

private string msg;

public NetMessage(Sring msg){

this.msg = msg ;

}

public boolean open() { //获取资源链接

System.out.printin("【EOPEN】获取消息发送连接资源。");

return true ;

}

@Override

public void send() }

if (this.open()) {

System.out.println( " 【***发送消息***】”+ this.msg);

}

}

public void close() {

System.out.println(“ 【CLOSE】关闭消息发送通道。);

}

}

此时实现了一个模拟代码的处理流程,但有个问题,既然所有的资源完成处理之后都必须进行关闭操作,那么能否实现一种自动关闭的功能呢?

在这样的要求下,推出了 AutoCloseable 访问接口,这个接口是在 JDK1.7 的时候提供的,并且该接口只提供有一个方法。

关闭方法: public void close() throws Exception;

图片2.png


二.范例:实现自动关闭处理

package cn.mldn . demo;

public class JavaAPIDemo {

public static void main(String[ ] args) throws Exception {

try(IMessage nm = new NetMessage("www.mldn.cn")){

nm.send();

} catch(Exception e) {}

}

}

interface IMessage extends AutoCloseable {

public void send(); //消息发送

}

class NetMessage implements IMessage { //实现消息的处理机制

private string msg;

public NetMessage(Sring msg){

this.msg = msg ;

}

public boolean open() { //获取资源链接

System.out.printin("【EOPEN】获取消息发送连接资源。");

return true ;

}

@Override

public void send() }

if (this.open()) {

System.out.println( " 【***发送消息***】”+ this.msg);

}

}

public void close() throws Exception {

System.out.println(“ 【CLOSE】关闭消息发送通道。);

}

}

在整个的过程中,只有结合了 AutoCloseable ,整个程序才能实现自动的Close 调用,这种操作形式是在 JDK1.7 之后新增的处理,在以后的章节之中会接触到资源的关闭问题,往往都会见到 AutoCloseable 接口的使用。

这个接口要和异常捆绑在一起明确使用才能正确完成。



            </div>
相关文章
|
3天前
使用接口
使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2,一个类只能继承一个,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {} 3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。 4、如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。 5如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进 行覆善重写。 6.一个类如果直接父类当中的方法,和接口当中的默认
167 29
|
3天前
接口接口
使用接口的时候,需要注意: 1.接口是没有静态代码块或者构造方法的。 2,一个类只能继承一个,但是一个类可以同时实现多个接口。 格式: public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {} 3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。 4、如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。 5如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进 行覆善重写。 6.一个类如果直接父类当中的方法,和接口当中的默认
32 5
|
10月前
|
Java 编译器
接口的学习与总结
接口的学习与总结
|
10月前
|
前端开发 微服务
|
Java 开发者 索引
CharSequence 接口|学习笔记
快速学习 CharSequence 接口
126 0
CharSequence 接口|学习笔记
|
敏捷开发 PHP 开发者
接口|学习笔记
快速学习接口,理解接口概念,掌握接口的价值和定义方式。
55 0
接口|学习笔记
|
存储 PHP 开发者
封装|学习笔记
快速学习封装
75 0
封装|学习笔记
|
安全 小程序 Scala
封装|学习笔记
快速学习封装。
63 0
|
XML JSON 前端开发
初步封装| 学习笔记
快速学习初步封装。
60 0