Gymterview
senior

Почему бы не создать PhantomHashMap на PhantomReferences

PhantomReference при вызове метода get() всегда возвращает null — это заложено в контракте класса. Создать PhantomHashMap невозможно по смыслу: если ключ всегда null, нельзя ни найти запись, ни получить значение по ключу.

PhantomReference предназначен для совершенно другой задачи: отслеживание момента, когда объект был финализирован и готов к удалению из памяти. Он используется через ReferenceQueue для выполнения действий очистки ресурсов (закрытие файлов, освобождение нативной памяти) как альтернатива методу finalize(). Эта семантика не совместима с концепцией ассоциативного массива.

На собеседовании: ключевой аргумент — PhantomReference.get() всегда возвращает null. Покажите, что знаете назначение PhantomReference: отслеживание финализации через ReferenceQueue.