#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
пакете, и конструкции являются частными для пакета, поэтому вам придется сделать некоторые реальные криминальные вещи, чтобы скомпилировать и загрузить его в первую очередь.