我有一个具有以下结构的类:
public class RandomMatrixIndex implements IIndex {
private final HashMap<Long, Long> index;
private RandomAccessFile rand;
// constructor and methods.
}
在构造函数中打开 RandomAccessFile rand。在另一个类中,我创建了一个哈希图:
private final HashMap<String, WeakHashMap<String, IIndex>> _MATRIX_MAP;
_MATRIX_MAP.put(....);
该映射包含到由上述类实现的 IIndex 接口的映射。如果我将 RandomMatrixIndex 放在地图中,则引用可能会被垃圾收集,并且我无法正确关闭 RandomAccessFile。
现在我的问题。如果对 WeakHashMap 的引用丢失,我如何关闭 RandomAccessFile?我必须在 RandomMatrixIndex 构造函数中包含终结器吗?OR 是文件句柄自动关闭。(如果这是糟糕的编码风格,请原谅)
非常感谢!