问题标签 [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.
java - 将对象转换为它们未实现但具有相同方法签名的接口
请看下面的DbUtil
类示例。以下是它的三种方法
如您所见,所有 3 种方法都有相同的逻辑,我想让这段代码干燥。一个新的常用方法可以这样写
AutoCloseable
接口不包含isClosed
方法。但是在尝试关闭资源之前执行该检查仍然是一个好习惯(甚至必须做)。我对吗?代码可以以某种方式简化并且仍然执行isClosed
检查吗?
笔记。这只是问题的一个例子。我知道该AutoCloseable
界面是为尝试资源技术而设计的,因此可以使用该样式重写代码,并且DbUtil
不再需要。但我想为自己澄清一下,在类似的情况下甚至可以做些什么。例如,我会考虑创建一些接口,例如,MyAutoCloseable
扩展AutoCloseable
一个并拥有isClosed
方法,但肯定不会奏效,因为不可能强制转换ResultSet
或Statement
转换为MyAutoCloseable
.
kotlin - 为什么 use 块不能安全地初始化 var?
为什么这会产生编译错误?
也许编译器只是将{ myVar= it.foo() }
其视为传递给另一个函数的函数,并且不知道何时甚至是否会执行它?
但是由于use
它不仅仅是一个函数,而是 Kotlin 对 Java 的 try-with-resource 的替代品,所以一些关于它的特殊知识是合适的,不是吗?现在,我被迫myVar
使用一些虚拟值进行初始化,这根本不符合 Kotlin 的精神。
java - 资源关闭语句如何在 Java 7 内部工作?
Java 7 特性具有资源自动关闭和多捕获语句,但在这两种情况下它如何在内部工作?
例如
这里不需要finally。但它在内部如何运作?JVM如何在内部关闭它?
java - Java Connection Pool 和 try-with 语句:连接实际上是关闭还是返回到池中?
我有一个使用 KeyedObjectPool 类的 jdbc 连接池,我通过实现的方法openConnection()
和closeConnection()
. closeConnection()
通常只是将连接返回到池并仅在它以前经常使用时才将其关闭。因此它使用ConnectionPool.returnObject()
which 不会关闭连接对象(请参见此处)。
但是,如果我像这样使用连接池:
使用的连接对象是try-with
仅返回到池中还是实际上关闭了connection.close()
(我不希望发生这种情况,因为它会使我的池无用)?
java - 尝试使用 Java 中的多个资源
我是新来的Java8
,我想知道对于AutoCloseable
资源,我是否必须try
为每个添加一个resource
,否则它将与上面的代码一起使用
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
也不起作用,因为我没有尝试关闭类的特定实例(我不控制类),我希望某个方法的客户端在完成之前执行特定的方法或代码。
java - AutoCloseable 关闭方法中的业务逻辑
一个好的做法是在 close 方法(AutoCloseable 接口)中包含业务逻辑,而不是手动调用逻辑,而是通过 try-with-resource ?
我有一个场景,我使用 jax-b 将流方式写入 XML 文件,我需要手动编写开始标记元素和开始结束元素。业务逻辑很接近,但我认为这不是好的做法,你的意见是什么?
我的例子
您对打开和关闭方法有何看法?方法可以有业务逻辑还是只有打开流(open 方法)和关闭流(close 方法)?是否应该将另一个逻辑提取到专用方法中?
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?
java - 如果自动关闭未存储在变量中,那么我是否必须尝试使用资源?
假设我有一个可自动关闭的资源(由 Sql.query 调用返回),那么是否必须将其返回到变量中并尝试使用资源以避免资源泄漏?
在这种情况下,是否必须将此代码更改为:
为了避免有一个非封闭java.sql.ResultSet
?我没有找到关于那个案例的明确文件......我想应该是,但我没有找到关于它的明确文件(而且因为它感觉很奇怪,我不确定它是否真的需要)
java - 如何为施工时打开的资源实现自动关闭
我有一个在构建对象时打开的资源。我用它来编写对象的整个生命周期。但是我的应用程序可以在没有警告的情况下关闭,我需要捕获它。课程非常简单。
所以,你明白了。如果应用程序出现故障,我想“自动关闭”指标。