从LinkedHashMap中删除对象之前,关闭对象是否安全?

时间:2018-09-26 17:59:30

标签: java hashmap autocloseable

我想重写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;
        }

2 个答案:

答案 0 :(得分:1)

如果您不再使用任何基础资源并且不需要该物品,那么我不明白为什么。

答案 1 :(得分:0)

关闭资源不会释放对象或使其使用不安全。

如果您在关闭它后尝试使用它,则可能会引发异常,具体取决于调用的方法在封闭资源上的作用。

仅当不再引用该对象时,该对象的内存才在GC上释放。