84得票1回答
当AutoCloseable为空时,尝试使用资源(Try-With Resource)

try-with 功能如何处理已声明为 null 的 AutoCloseable 变量?当它尝试在变量上调用 close 时,我原以为这会导致空指针异常,但它可以正常运行:try (BufferedReader br = null){ System.out.println("...

82得票4回答
使用AutoCloseable(try-with-resources)关闭多个资源

我知道如果你在try语句中传递的资源实现了AutoCloseable接口,它将自动关闭。目前为止还不错。但是当我有多个需要自动关闭的资源时该怎么办?比如使用sockets的示例;try (Socket socket = new Socket()) { input = new DataI...

54得票1回答
在Java中尝试使用多个资源

我是Java8的新手,想知道对于AutoCloseable资源,是否需要为每个resource添加一个try,或者上面的代码就可以工作。try (Connection conn = getConnection();) { Statement stmt = conn.c...

38得票3回答
幂等方法是什么意思?在调用java.lang.AutoCloseable的close方法时有什么副作用?

java.lang.AutoCloseable的close()方法的Java文档中提到: 请注意,与Closeable的close()方法不同,此close()方法不需要是幂等的。换句话说,多次调用此关闭方法可能会产生某些可见的副作用,而Closeable#close()在被多次调用时要求...

31得票5回答
为什么try-with-resources语句中的catch块是可选的?

我读到try-with-resources中的catch块是可选的。我试图在try-with-resources块中创建一个Connection对象,并没有后续的catch块,结果从eclipse编译器得到了错误提示:"Unhandled exception type SQLException...

29得票5回答
在Java中,如何检查已经调用了AutoCloseable.close()方法?

我正在编写一个Java库。其中一些类是为库用户使用的,它们持有本地系统资源(通过JNI)。我希望确保用户“处理”这些对象,因为它们很重,在测试套件中可能会导致测试用例之间发生泄漏(例如,我需要确保TearDown将被处理)。为此,我使Java类实现了AutoCloseable,但这似乎不够,或...

25得票1回答
在Java中,如何确保Closeable接口的close()方法是幂等的?

Closeable接口在Java 5中引入,而AutoCloseable接口与try-with-resources语句一起在Java 7中引入。自Java 7以来,Closeable扩展了AutoCloseable接口。 在书籍 OCA / OCP Java SE 7-程序员I和II学习指南...

20得票1回答
为什么在Java的try-with-resources结构中,在catch之前调用资源的close()方法?

我碰巧意识到这是事实。请看下面的示例:public class AutoClosableTest { public static void main(String[] args) throws Exception { try (MyClosable instance =...

14得票3回答
在Stream API中使用AutoClosable接口

今天我尝试重构这段代码,该代码从目录中的文件读取ID。Set<Long> ids = new HashSet<>(); for (String fileName : fileSystem.list("my-directory")) { InputStream s...

13得票1回答
工厂创建的实例遇到"资源泄漏"警告,如何使用AutoCloseable?

在Eclipse中,我收到关于AutoCloseable的"资源泄漏"警告,这似乎是一个救星。 然而,我该如何让它们适用于工厂创建的实例? 例如(a可行,但b不可行): public static void main(String[] args) { // a) This emits...