在 C++ 中,我们有资源获取即初始化(RAII) 模式,它极大地简化了资源管理。这个想法是为任何类型的资源提供一些包装对象。包装对象的析构函数然后负责释放资源,当它超出其范围时。例如:
{
auto_ptr<int> smartPointer = new int;
// some other code
} // the memory allocated for the int is released automatically
// by smartPointer's destructor
最常见的用法是智能指针。但是,还有许多其他类型的资源(文件、互斥体、套接字等)可以以完全相同的方式进行管理。
在 Java 中,不必担心内存管理。但所有其他类型的资源仍然存在。有finally块,但是它的使用相当不方便,尤其是当可以抛出许多不同的异常时。
所以,我的问题是,是否有任何 Java 模式提供与 C++ RAII 等效的功能?如果没有,请分享您在该领域的最佳实践(而不是 finally,除非它使用了一些复杂的方式)。