结果AutoCloseable从字面上来看,自动关闭,意思是某些资源获取使用后需要关闭,比如网络资源,file资源,数据库连接等等。
正常的情况下,我们使用try{ } finally{ } 在finally中关闭资源,但是有时候我们会忘记关闭资源,或者关闭不完全。
从JDK1.7提供了自动关闭接口:
public interface AutoCloseable {
void close() throws Exception;
}
一个类实现这个接口
class Messge implements AutoCloseable{
private String msg;
public Messge(String msg) {
this.msg = msg;
System.out.println("新建资源:"+this.msg);
}
public void send(){
System.out.println("资源发送:"+msg);
}
@Override
public void close() throws Exception {
msg = null;
System.out.println("资源关闭");
}
}
try语句还有一种格式叫带资源的try语句:try(Autocloseable的实例){ }catch{ },多个实例用分号连接,在try结束的时候会自动调用其close方法
//带资源的try语句,其为AutoCloseable实例
try (Messge ms = new Messge("www.cd.com")){
ms.send();
}catch (Exception e){
e.printStackTrace();
}
运行结果
新建资源:www.cd.com
资源发送:www.cd.com
资源关闭