AutoCloseable接口
此接口主要是用于日后进行资源开发的处理上,实现资源的自动关闭(释放资源),例如以后进行网络、文件、数据开发中由于服务器的资源有限,所以使用之后一定要关闭资源才可以被更多访问者使用。
范例:手工实现资源处理
public class JavaDemo {
public static void main(String[] args) {
MessageImpl messageImpl = new MessageImpl("被发送的消息内容");//定义要发送的处理
if(messageImpl.open()) { //是否获取了资源
messageImpl.send(); //消息发送
messageImpl.close(); //关闭连接
}
}
}
interface IMessage{
public void send(); //消息发送
}
class MessageImpl implements IMessage{
private String msg;
public MessageImpl(String msg) {
this.msg = msg;
}
public boolean open() { //获取资源连接
System.out.println("Open获取信息发送资源");
return true;
}
public void close() {
System.out.println("Close关闭消息发送通道");
}
@Override
public void send() {
System.out.println("***发送消息***"+msg);
}
}
Open获取信息发送资源
***发送消息***被发送的消息内容
Close关闭消息发送通道
可以发现每次发完信息都需要进行关闭操作,为什么不设置一个自动关闭的功能呢?应要求官方在JDK1.7提出了AutoCloseable接口,这个接口只提供了一个c方法。
关闭方法:public void close() throws Exception;
package Java基础类库;
public class AtuoCloseable类 {
public static void main(String[] args) throws Exception{
//close方法要配合异常处理才可以使用
try(MessageImpl messageImpl = new MessageImpl("被发送的消息内容")){
if(messageImpl.open()) {
messageImpl.send(); //消息发送
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
interface IMessage extends AutoCloseable{
public void send(); //消息发送
}
class MessageImpl implements IMessage{
private String msg;
public MessageImpl(String msg) {
this.msg = msg;
}
public boolean open() { //获取资源连接
System.out.println("Open获取信息发送资源");
return true;
}
public void close() throws Exception{
System.out.println("Close关闭消息发送通道");
}
@Override
public void send() {
System.out.println("***发送消息***"+msg);
}
}
close方法要配合异常处理才可以使用