java - 如果未调用用户定义类的 close() 函数,如何发出警告?
问题描述
我一直在寻找如何在 Java 中引发警告,如果来自具有close()函数的类中的特定对象在某些时候没有调用该close()函数(例如BufferedReader类)。
在搜索这个时,我发现了Closeable和AutoCloseable接口以及它们是如何工作的,以及这个问题很有帮助:当类未关闭时强制警告
但是我仍然面临这样一个问题,当有问题的对象是通过函数创建时,它不应该被认为没有关闭。
例如,在这段代码中:
//X.java
import java.io.Closeable;
import java.io.IOException;
public class X implements Closeable{
@Override
public void close() throws IOException {
System.out.println("CLOSE");
}
}
//Main.java
public static void main(String[] args) throws IOException {
X x = new X();
System.out.println(x);
}
引发资源泄漏警告,但在这个(相同的 X.java)中:
//Main.java
public class Main {
public static void main(String[] args) {
X x = getX();
System.out.println(x);
}
public static X getX(){
return new X();
}
}
在我想要的地方没有发出警告。
谢谢 !
解决方案
推荐阅读
- java - Spring 如何为没有参数的 bean 设置参数设置问题?
- javascript - 如何在 Vue cli 项目中使用 API 从 Ghost 博客获取帖子
- api - 从 Ebay 在 getItem API 上获取 401 Unauthorized
- java - DynamoDb 扫描过滤器未返回某些请求的结果
- bash - Shell 读取行将数据提取到变量中以测试 if/else 语句的打印行
- python - 为什么 !在 pip 命令之前使用?
- netsuite - NetSuite 自定义字段 - 删除特殊字符的公式
- mysql - SQL:如何更改我的查询以获得以下结果?
- android - 丢失密钥库密码但仍有 private_key.pepk :Google 登录应用
- python - 在 PlotWidget 中添加自定义标签