我想重写LinkedHashMap的removeEldestEntry(Map.Entry)方法以自动删除陈旧的映射。我也想清理将被删除的条目。
该条目是一个AutoCloseable对象。如果要删除它,可以对其调用close()吗?这样做是最好的做法吗?
public boolean removeEldestEntry(@Nonnull final Map.Entry<myKey, myObject> eldestEntry) {
if (size() > 100) {
eldestEntry.getValue().close();
return true;
}
return false;
}
答案 0 :(得分:1)
如果您不再使用任何基础资源并且不需要该物品,那么我不明白为什么。
答案 1 :(得分:0)
关闭资源不会释放对象或使其使用不安全。
如果您在关闭它后尝试使用它,则可能会引发异常,具体取决于调用的方法在封闭资源上的作用。
仅当不再引用该对象时,该对象的内存才在GC上释放。