Сильный ссылочный класс

#java #reference #java-7 #strong-references

#java #ссылка #java-7 #сильные ссылки

Вопрос:

Почему java.lang.ref.StrongReference в jdk1.7 нет класса? (см. JDK-6392701)

Я пытаюсь реализовать поведение, которое должно иметь возможность хранить объекты в разных ссылочных значениях. Итак, моей первой мыслью было использовать поле типа Reference<T> и назначить ссылку с желаемой силой. Но нет класса для сильных ссылок, и расширение Reference вручную кажется совершенно неправильным направлением.

Альтернативой было бы иметь два поля, одно из которых является a Reference , а другое имеет желаемый тип и имеет только один набор, но a Reference , который надежно хранит значения, сделает код намного чище.

Ответ №1:

… и расширение ссылки вручную кажется совершенно неправильным направлением.

Это хуже, чем это. В соответствии с API:

Поскольку ссылочные объекты реализуются в тесном сотрудничестве со сборщиком мусора, этот класс не может быть подклассом напрямую.

Если вы хотите иметь возможность хранить несколько разных типов ссылок, включая strong, в одной и той же структуре, лучше всего, вероятно, создать свой собственный ссылочный интерфейс и сделать две реализации: одну обертку a Reference<T> и одну обертку обычного объекта.

Комментарии:

1. кроме того, он находится в java.lang пакете, и конструкции являются частными для пакета, поэтому вам придется сделать некоторые реальные криминальные вещи, чтобы скомпилировать и загрузить его в первую очередь.