我有一个由 ResultSet 支持的迭代器。我需要它来进行行级后处理。迭代器实现 AutoCloseable 接口。连接保持打开状态,直到我们遍历所有被用户中断的行/迭代。如果迭代器的使用者显式调用 close() 方法或将迭代器的使用包装在 Java7 的 try 块中,那么一切都很好。但是,如果消费者不这样做,我不能保证连接将返回到池中。在 C# 世界中,我们会做一个终结器并从终结器调用 Dispose(bool) 作为后备选项。我们应该在 Java 中做同样的事情吗?
我有一个由 ResultSet 支持的迭代器。我需要它来进行行级后处理。迭代器实现 AutoCloseable 接口。连接保持打开状态,直到我们遍历所有被用户中断的行/迭代。如果迭代器的使用者显式调用 close() 方法或将迭代器的使用包装在 Java7 的 try 块中,那么一切都很好。但是,如果消费者不这样做,我不能保证连接将返回到池中。在 C# 世界中,我们会做一个终结器并从终结器调用 Dispose(bool) 作为后备选项。我们应该在 Java 中做同样的事情吗?