首页 > 其他分享 >Closeable接口

Closeable接口

时间:2024-11-19 19:55:56浏览次数:1  
标签:test1 test2 接口 public try close Closeable

Closeable接口继承于AutoCloseable,主要的作用就是自动的关闭资源,其中close()方法是关闭流并且释放与其相关的任何方法,如果流已被关闭,那么调用此方法没有效果,像InputStream和OutputStream类都实现了该接口,源码如下

/*
 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
 
package java.io;
 
import java.io.IOException;
 
/**
 * A {@code Closeable} is a source or destination of data that can be closed.
 * The close method is invoked to release resources that the object is
 * holding (such as open files).
 *
 * @since 1.5
 */
public interface Closeable extends AutoCloseable {
 
    /**
     * Closes this stream and releases any system resources associated
     * with it. If the stream is already closed then invoking this
     * method has no effect.
     *
     * <p> As noted in {@link AutoCloseable#close()}, cases where the
     * close may fail require careful attention. It is strongly advised
     * to relinquish the underlying resources and to internally
     * <em>mark</em> the {@code Closeable} as closed, prior to throwing
     * the {@code IOException}.
     *
     * @throws IOException if an I/O error occurs
     */
    public void close() throws IOException;
}

Closeable用法
1.在1.7之前,我们通过try{} finally{} 在finally中释放资源。

2.对于实现AutoCloseable接口的类的实例,将其放到try后面(我们称之为:带资源的try语句),在try结束的时候,会自动将这些资源关闭(调用close方法)

package com.canal.demo;

import java.io.Closeable;
import java.io.IOException;

public class CloseableTest implements Closeable {
    public static void test1() {
        try {
            System.out.println("test1方法 处理逻辑");
        } catch (Exception e) {
            System.out.println("test1方法 异常处理");
        } finally {
            System.out.println("test1方法 释放资源");
        }
    }
    public static void test2() {
        try (CloseableTest c = new CloseableTest()) {
            System.out.println("test2方法 处理逻辑");
        } catch (Exception e) {
            System.out.println("test2方法 处理异常");
        }
    }
    @Override
    public void close() throws IOException {
        System.out.println("test2方法这里自动释放资源");
    }

    public static void main(String[] args) {
        test1();
        test2();
    }
}

解释:
因为test2中将该类创建对象的过程放置在了try语句中,所以test2会进行自动的资源释放

运行结果:
test1方法 处理逻辑
test1方法 释放资源
test2方法 处理逻辑
test2方法这里自动释放资源

标签:test1,test2,接口,public,try,close,Closeable
From: https://www.cnblogs.com/rhy2103/p/18555502

相关文章

  • 接口测试之postman
    一、介绍postmanPostman是一个网页调试工具,也可以调试css、html等Postman的操作环境环境:PostmanMac、WindowsX32、WindowsX64、Linux系统、postman浏览器扩展程序、postmanchrome应用程序Postman下载:https://www.postman.com/downloads/三、postman使用1、创建集合3......
  • 接口测试之fiddler
    二、Fiddler简介fiddler是C#开发免费web调试工具之一,记录所有客户端和服务端常见的http以及https请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基于事件脚本的子系统,并且能使用.net语言来拓展。Fiddler也是一款专用的抓包工具,也是一个调试工具,我们可以用......
  • Fast-UMI:一种可扩展且独立于硬件的通用操作接口
    24年9月来自上海AI实验室、西安交大-利物浦分校、西工大和中国电信AI研究院的论文“Fast-UMI:AScalableandHardware-IndependentUniversalManipulationInterface(ShortVersion)”。收集涉及机械臂的真实世界操作轨迹数据对于开发机器人操作中的通用动作策略至关重......
  • 接口控制器层(Controller层)设计(网文)
    在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用。那么问题来了,如果设计一个优雅的Controller接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求?今天跟大家一起聊聊设计Controller接口时,......
  • 0day通达OA qyapp.vote.submit.php接口存在SQL注入漏洞
     0x01产品概述    0day通达OAqyapp.vote.submit.php接口存在SQL注入漏洞管理和发布于一体的智能化平台,广泛应用于新闻、媒体和各类内容创作机构。该平台支持多终端、多渠道的内容分发,具备素材管理、编辑加工、智能审核等功能,通过AI技术辅助内容创作与数据分析,提升内......
  • 关于实际项目中必要的几个文件操作接口
    必要的成员:文件路径QStringA文件句柄QFileB数据流QDataStreamC必要的接口load(QStringfileFullPaht);加载文件并构造和DataStream的联系save();按数据saveAs(QStringfullPath);另存,该函数构造局部的QFile及相关的流操作对象。不要用类成员变量中的Bap......
  • 【接口】IPMI
    一、概述IPMI(IntelligentPlatformManagementInterface)是一种用于管理和监控计算机系统硬件的标准接口。它提供了一套标准化的远程管理功能,使系统管理员可以通过网络远程监控、管理和维护服务器和其他计算设备,即使在操作系统崩溃或未启动的情况下也可以进行管理。1、硬件结构......
  • 掌控 Solidity:事件日志、继承和接口的深度解析
    Solidity是以太坊智能合约的主要编程语言,它的强大之处在于能够帮助开发者构建安全、高效的去中心化应用。在我参与的多个项目中,事件日志、继承和接口这三个概念始终贯穿其中,成为构建复杂智能合约的关键技术。今天就来聊聊Solidity中的错误处理、事件日志、继承和接口。Solidi......
  • 新型接口自动化解决方案与框架可行性分析
    接口自动化现状传统的接口自动化方案有一定的收益,但成本过高,导致整体性价比过低。另外当团队人力增长和后续业务发展预期不匹配时,再使用传统自动化方案无法满足自动化测试需求。成本高主要是体现在三方面:整体开发成本高,开发时间跨度大,对测试开发人员有一定的能力要求......
  • Linux 下网络套接字(Socket) 与udp和tcp 相关接口
    文章目录1.socket常见API2sockaddr结构体及其子类1.sockaddr结构体定义(基类)2.子类sockaddr_in结构体用于(IPv4)3子类sockaddr_un(Unix域套接字)4.总结画出其结构体3.实现一个简单的tcpEcho服务器和客户端(cpp)3.1客户端3.2服务器3.3测试结果1.socket常......