【发布时间】:2010-10-15 18:33:03
【问题描述】:
在 C++ 中,我们有 Resource Acquisition Is Initialization (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,除非它使用了一些复杂的方式)。
【问题讨论】:
-
“大大简化了资源管理”你在开玩笑吗??
-
@hasen j:我不明白这个问题。
-
@hasen 不确定从源代码的角度来看,资源管理如何比 C++ RAII 简单得多...
标签: java raii resource-management