问题标签 [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 投票
2 回答
158 浏览

java - 将对象转换为它们未实现但具有相同方法签名的接口

请看下面的DbUtil类示例。以下是它的三种方法

如您所见,所有 3 种方法都有相同的逻辑,我想让这段代码干燥。一个新的常用方法可以这样写

AutoCloseable接口不包含isClosed方法。但是在尝试关闭资源之前执行该检查仍然是一个好习惯(甚至必须做)。我对吗?代码可以以某种方式简化并且仍然执行isClosed检查吗?

笔记。这只是问题的一个例子。我知道该AutoCloseable界面是为尝试资源技术而设计的,因此可以使用该样式重写代码,并且DbUtil不再需要。但我想为自己澄清一下,在类似的情况下甚至可以做些什么。例如,我会考虑创建一些接口,例如,MyAutoCloseable扩展AutoCloseable一个并拥有isClosed方法,但肯定不会奏效,因为不可能强制转换ResultSetStatement转换为MyAutoCloseable.

0 投票
3 回答
792 浏览

kotlin - 为什么 use 块不能安全地初始化 var?

为什么这会产生编译错误?

也许编译器只是将{ myVar= it.foo() }其视为传递给另一个函数的函数,并且不知道何时甚至是否会执行它?

但是由于use它不仅仅是一个函数,而是 Kotlin 对 Java 的 try-with-resource 的替代品,所以一些关于它的特殊知识是合适的,不是吗?现在,我被迫myVar使用一些虚拟值进行初始化,这根本不符合 Kotlin 的精神。

0 投票
0 回答
33 浏览

java - 资源关闭语句如何在 Java 7 内部工作?

Java 7 特性具有资源自动关闭多捕获语句,但在这两种情况下它如何在内部工作?

例如

这里不需要finally。但它在内部如何运作?JVM如何在内部关闭它?

0 投票
2 回答
584 浏览

java - Java Connection Pool 和 try-with 语句:连接实际上是关闭还是返回到池中?

我有一个使用 KeyedObjectPool 类的 jdbc 连接池,我通过实现的方法openConnection()closeConnection(). closeConnection()通常只是将连接返回到池并仅在它以前经常使用时才将其关闭。因此它使用ConnectionPool.returnObject()which 不会关闭连接对象(请参见此处)。

但是,如果我像这样使用连接池:

使用的连接对象是try-with仅返回到池中还是实际上关闭了connection.close()(我不希望发生这种情况,因为它会使我的池无用)?

0 投票
1 回答
28521 浏览

java - 尝试使用 Java 中的多个资源

我是新来的Java8,我想知道对于AutoCloseable资源,我是否必须try为每个添加一个resource,否则它将与上面的代码一起使用

0 投票
1 回答
120 浏览

java - Java:强制方法的客户端在返回之前执行代码

我有一堆 WebDriver 配置文件(我们称它们为 x、y 和 z),我需要选择一个随机配置文件来执行某些操作。我们将动作称为 A、B 和 C。

在我的课堂WebDriverManager上,我定义了三种方法doA()doB()doC()。每种方法都将选择一个随机配置文件,该配置文件a)当前未使用b)有资格执行给定操作。

如果 aclient调用doA(), doB() or doC(),他们将获得有WebDriver资格执行操作 A、B 或 C的配置文件。doA(), doB() or doC()还将所述配置文件的状态设置为 UNAVAILABLE(通过 props 文件),以便配置文件不会被返回用于不同的操作(或如果从不同的线程调用相同的操作),直到它再次可用。

我的问题是,只有当客户完成将所述配置文件用于其预期目的时,该配置文件才会变得可用。

由于方法doA()等将通过许多客户端访问,我如何强制ofclient或在profile 返回之前将其状态设置为 AVAILABLE ?如果将来某个时候我忘记将给定配置文件的状态更改为可用(在客户端),它将永远保持不可用,这将导致很多问题。doA()doB()doC()WebDriver

那么如何保证调用任何方法doA()doB()doC()在返回之前将配置文件状态设置为 AVAILABLE 呢?

附言

是我在 SO 上找到的最接近的问题,但我认为这并不能解决我的问题,因为我无法控制实际的WebDriver类,我只是希望每个上述方法的客户端在返回之前执行某个操作。

AutoClosable也不起作用,因为我没有尝试关闭类的特定实例(我不控制类),我希望某个方法的客户端在完成之前执行特定的方法或代码。

0 投票
1 回答
35 浏览

java - AutoCloseable 关闭方法中的业务逻辑

一个好的做法是在 close 方法(AutoCloseable 接口)中包含业务逻辑,而不是手动调用逻辑,而是通过 try-with-resource ?

我有一个场景,我使用 jax-b 将流方式写入 XML 文件,我需要手动编写开始标记元素和开始结束元素。业务逻辑很接近,但我认为这不是好的做法,你的意见是什么?

我的例子

您对打开和关闭方法有何看法?方法可以有业务逻辑还是只有打开流(open 方法)和关闭流(close 方法)?是否应该将另一个逻辑提取到专用方法中?

0 投票
2 回答
20593 浏览

java - Right way to close CloseableHttpResponse/CloseableHttpClient

I'm using CloseableHttpResponse (from apache-httpclient-4.5.3) and I'm not sure I'm using it right, I saw an answer with no votes to use EntityUtils.consume on finally:

CloseableHttpClient is abstract and has no close method to call although in this answer it's used:

Currently I'm using try with resources for CloseableHttpClient and CloseableHttpResponse inside of send method.

Am I not missing any resource open or using it in a wrong way?

0 投票
0 回答
104 浏览

java - 如果自动关闭未存储在变量中,那么我是否必须尝试使用​​资源?

假设我有一个可自动关闭的资源(由 Sql.query 调用返回),那么是否必须将其返回到变量中并尝试使用资源以避免资源泄漏?

在这种情况下,是否必须将此代码更改为:

为了避免有一个非封闭java.sql.ResultSet?我没有找到关于那个案例的明确文件......我想应该是,但我没有找到关于它的明确文件(而且因为它感觉很奇怪,我不确定它是否真的需要)

0 投票
1 回答
304 浏览

java - 如何为施工时打开的资源实现自动关闭

我有一个在构建对象时打开的资源。我用它来编写对象的整个生命周期。但是我的应用程序可以在没有警告的情况下关闭,我需要捕获它。课程非常简单。

所以,你明白了。如果应用程序出现故障,我想“自动关闭”指标。