Безопасно ли закрывать объект перед его удалением из LinkedHashMap? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу переопределить метод removeEldestEntry (Map.Entry) LinkedHashMap для автоматического удаления устаревших отображений.Также я хочу очистить запись, которая будет удалена.

Запись является объектом автозаполнения.Могу ли я вызвать close () для него, если он будет удален?Это лучшая практика, как показано ниже?

        public boolean removeEldestEntry(@Nonnull final Map.Entry<myKey, myObject> eldestEntry) {
            if (size() > 100) {
                eldestEntry.getValue().close();
                return true;
            }
            return false;
        }

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Закрытие ресурса не освобождает объект и не делает его небезопасным для использования.

Может возникнуть исключение, если вы попытаетесь использовать его после закрытия в зависимости от того, что методы, которые вы вызываете, делают на закрытомресурс.

Память объекта освобождается в ГХ, только когда на объект больше нет ссылок.

0 голосов
/ 26 сентября 2018

Если вы больше не используете какой-либо из базовых ресурсов и не нуждаетесь в предмете, я не вижу, почему нет.

...