java - 如何对构建时打开的资源实现 Autocloseable

标签 java autocloseable

我有一个在构建对象时打开的资源。我用它在对象的整个生命周期中进行写入。但我的应用程序可能会在没有警告的情况下关闭,我需要捕获这一点。该类非常简单。

public class SomeWriter {
    private Metrics metrics;

    public SomeWriter() {
        try (metrics = new Metrics()) { // I know I can't but the idea is there
        }
    }

    public void write(String blah) {
       metrics.write(blah);
    }

    public void close() {
       metrics.close();
    }

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

最佳答案

这对于 try-with-resource 概念来说是不可能的,它仅适用于本地范围。您可以在 close() 中关闭 Metrics 的最佳方式。

最好的办法是让 SomeWriter 也实现 AutoCloseable 并在 try-with-resources block 中使用 writer 本身,如下所示

try (SomeWriter writer = new SomeWriter()) {
}
// here, the Metrics will also have been closed.

关于java - 如何对构建时打开的资源实现 Autocloseable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49493942/

相关文章:

java - 填充 Filter 类中的 JSP 下拉列表

java - java.util.Date 的有效范围?

java - 在与主体分开的 try-with-resources 中捕获对象构造期间的错误

java - 这是数据库连接和可自动关闭资源的正确实现吗?

java - 在 try-with-resources 中关闭动态数量的 AutoCloseable 对象

java - 在面向对象编程中,对象是方法调用的一部分吗?

java - JSF 2 找不到我的 xhml 文件

java - 如何在 javaFX 中对 GUI 应用最少的更改

Java 7,尝试资源 : can i omit creating Connection and PreparedStatement?

java - 为什么Java7专门引入了AutoCloseable?