问题标签 [autocloseable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1168 浏览

java - 在 try-with-resources 块中调用对象的方法

Java 教程声明您可以使用以下方法执行以下操作try-with-resources

在本教程中,ResultSet永远不会关闭,因此我想包含ResultSet,因为它也实现了AutoCloseable接口,如下所示:

这很好用,但是当涉及到PreparedStatements我希望能够在执行查询之前设置一些值时:

这会导致一系列编译错误,因为(我假设)只允许变量赋值。

try-with-resources有没有办法在同一个街区巧妙地做到这一点?

我已经想到了:

  1. 嵌套的 try-with-resources (这是我试图避免的)。我意识到这样做并没有什么“错误”,我只是为了可读性而这样做。

考虑以下情况:

对比

  1. setString()方法返回对象并将其包含在赋值中
  2. 创建某种帮助方法来创建连接并相应地设置参数。

就像是:

0 投票
2 回答
470 浏览

java - 在 try 块外引用 AutoCloseable 实例

为了方便起见,我想使用AutoCloseable接口对对象做一些事情,这些事情应该在进一步使用之前完成。

唯一的问题是try-with-resources块本身就是事物,我的意思是一般来说,为了获得对我的AutoCloseable实例的引用,我必须做这样的事情:

这里是这个结构:

看起来有些凌乱。所以我的问题更多是关于设计问题。我怀疑java架构师没有设想这样使用try-w-r块的原因是什么:

那么我可能不应该像上面描述的那样使用它吗?如果这样做是个好习惯?

编辑我被要求解释为什么我的问题与为什么 Java 的 try-with-resource 中需要声明不同

解释很简单:我不是在问为什么?,但是:如果这样做是个好习惯?

0 投票
1 回答
268 浏览

java - 自动关闭类不调用默认关闭方法

我有这段代码:

主要课程:

我想知道为什么我得到这个输出:

代替:

0 投票
1 回答
16119 浏览

java - 当 AutoCloseable 为空时尝试使用资源

try-with 功能如何对AutoCloseable已声明的变量起作用null

我认为当它尝试调用close变量时这会导致空指针异常,但它运行没有问题:

0 投票
1 回答
593 浏览

java-8 - 在 try-with-resources 块之外流式传输 JOOQ 结果时,我是否会冒 JDBC 连接泄漏的风险?

我有一个 JOOQ 查询,我想避免同时实现所有记录。(但是,我可以共同实现从它们创建的所有 bean 对象。)

我有以下简单的方法来加载数据:

这会在任何情况下导致 JDBC 连接泄漏吗?(例如 中的异常CustomerInfo::new

0 投票
3 回答
1148 浏览

java - Java程序终止时关闭文件失败有什么危害吗?

当我的程序启动时,它会打开一个文件并定期写入。(它不是日志文件;它是程序的输出之一。)我需要在程序的长度内使用该文件,但我不需要做任何特别的事情来结束文件;关闭它。

我为 Java 中的文件 I/O 收集了它,我应该实现AutoCloseable它并将其包装在一个 try-with-resources 块中。然而,因为这个文件是长期存在的,并且它是程序的少数输出之一,我发现很难组织我打开的所有文件都包含在 try-with-resources 块中的东西。此外,顶级类(我的main()函数所在的地方)不知道这个文件。

这是我的代码;注意缺乏writer.close()

tl;博士如果资源是打开的输出文件,我是否需要实现AutoCloseable和调用writer.close(),并且在程序完成之前我不需要关闭它?我可以假设 JVM 和操作系统(Linux)会自动为我清理东西吗?

奖励(?):我在 C# 中IDisposeable也遇到了这个问题。这个using块,就像 Java 的 try-with-resources 构造一样,是一个很好的特性,当我有一些我要打开的东西,快速做一些事情,然后马上关闭。但通常情况并非如此,特别是对于文件,当对该资源的访问暂停一段时间,或者当需要管理多个此类资源时。如果我的问题的答案是“始终使用 try-with-resources 块”,我又被卡住了。

0 投票
1 回答
942 浏览

java - 从 try-resource 结构返回 Future

我有以下方法,它使用 Apache Commons Http 客户端向给定的 URI 发送异步 GET 并返回 Future 和响应。

CloseableHttpAsyncClient 实现 Closeable 因此我使用 try/resource 结构。

下面你可能会看到用法:

问题是,当我在未来调用 get 时,它不会返回所需的 HttpResponse。如果我使用重载的 get() 方法,它会一直等到超时或永远。我想这是因为 try/resource 没有正确释放。

如何改进给定的方法/代码以便能够正确使用:Future with try/resource structure包含在方法主体中?

更新:

这是maven依赖:

0 投票
3 回答
1097 浏览

kotlin - 我自己对 Kotlin 的 try-with-resources 缺席的解决方案

Kotlinuse为对象提供了函数Closeable,但似乎他们忘记了AutoCloseable(例如,DB 准备好的语句)与 try-with-resources 的完整 Java 等效项。

我已经实施了下一个“自制”解决方案:

然后你可以通过下一个方式使用它:

我是 Kotlin 的新手,我想知道我自己的解决方案中是否遗漏了一些重要的东西,这些东西可能会给我在生产环境中带来问题/泄漏。

0 投票
1 回答
486 浏览

java - 关闭资源的最佳做法是什么?

我有一个 java 类,它分配了必须关闭的资源。我真的不知道如何执行这一点,我目前的方法是实现接口AutoCloseable,希望调用者close()有时调用并添加一个boolean在每个方法开始时检查的关闭,如果true,方法 throws IllegalStateException

调用者必须调用close()并且我必须在每个方法开始时检查关闭都不是很好,是否有一些最佳实践来避免这种情况?

0 投票
1 回答
132 浏览

java - 如何强制释放资源?

我有一个名为 Parameter 的类,它包含不同的值,包括java.sql.Clob

使用 JDBC4 规范,我们free()可以调用一个方法来释放分配给Clob对象的资源。我正在考虑在里面制作ParameterAutoClosable和调用free()方法close()

这很好,但我也想要强制执行或至少暗示其他人ParameterAutoClosable

除了文档之外,还有其他方法可以实现这一点吗?基本上我正在寻找在这种情况下可以做的额外事情。