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