当前位置: 首页 > news >正文

【每天学个新注解】Day 5 Lombok注解简解(四)—@Cleanup

@NonNull

自动管理输入输出流等各种需要释放的资源,确保安全地调用close方法。

1、如何使用

  • 声明的资源前加上@Cleanup。
  • 释放资源的方法名不是close,也可以指定要调用的方法名。

2、代码示例

例1:取自Lombok官网,加在有close的方法的资源上。

public class CleanupExample {public static void main(String[] args) throws IOException {@Cleanup InputStream in = new FileInputStream(args[0]);@Cleanup OutputStream out = new FileOutputStream(args[1]);byte[] b = new byte[10000];while (true) {int r = in.read(b);if (r == -1) {break;}out.write(b, 0, r);}}
}

编译后:自动释放了资源。
在这里插入图片描述
例2:自定义资源释放。

public class Door {/*** 门是否打开* true : 打开* false : 关闭*/private boolean openStatus;public Door(boolean openStatus) {this.openStatus = openStatus;}public Door() {this.openStatus = true;System.out.println("初始化时,门的状态默认是-打开 ");}public void function() {System.out.println("调用该对象的某一个或者多个方法ing");}public void shut() {System.out.println("门的状态是-" + (this.openStatus ? "打开" : "关闭"));this.openStatus = false;System.out.println("门的状态是-" + (this.openStatus ? "打开" : "关闭")); }public static void main(String[] args) {@Cleanup("shut")Door door = new Door();door.function();}
}

编译后:自动添加释放了资源所用的shut方法。
在这里插入图片描述
输出结果:
在这里插入图片描述


http://www.mrgr.cn/news/35534.html

相关文章:

  • 代码随想录算法训练营第三十九天 | 198.打家劫舍 ,213.打家劫舍II,337.打家劫舍III
  • 使用数据泵(Data Pump)迁移Oracle数据库数据
  • 针对国产化--离线安装Nginx rpm包下载 ARM64(.aarch64.rpm) 版本下载
  • CSS样式的4种引入方法
  • 洛谷P2571.传送带
  • 【VUE3.0】动手做一套像素风的前端UI组件库---Message
  • RabbitMQ简介
  • 《操作系统 - 清华大学》1 -2:操作系统概述 —— 什么是操作系统
  • 【C++取经之路】红黑树封装set
  • 关于养育孩子的一点想法
  • MATLAB算法实战应用案例精讲-【数模应用】路径规划
  • C++核心编程和桌面应用开发 第六天(this指针 友元)
  • Vue3中使用Pinia(封装并统一导出)
  • C++_CH19_继承
  • Make breakpoint pending on future shared library load
  • 【初阶数据结构】排序——插入排序
  • 阴影的基本原理
  • Linux驱动开发初识
  • mysql学习教程,从入门到精通,SQL RIGHT JOIN语句(24)
  • Robot Operating System——多边形数据