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