Есть ли "умные указатели" на Java?

есть ли что-нибудь вроде интеллектуальных указателей C++ в Java?

4 ответов


все "указатели" Java (ссылки) являются интеллектуальными указателями.

Java запускается в управляемой среде. Это означает, что Java использует сборщик мусора для очистки переменных, на которые больше не ссылаются.

ссылки Java немного отличаются от указателей. Java абстрагирует все значения указателей и математику, которые вы видите в C++. Таким образом, каждый раз, когда вы создаете новый объект и сохраняете его в переменной, вы сохраняете его в версии Java - умный указатель.'


Я слышал только об умных указателях в контексте управления памятью. Поскольку управление памятью лежит в основе платформы Java, очевидно, что в этом нет необходимости.

самые близкие совпадения, которые приходят на ум, - это java.ленг.ссылка.WeakReference и java.ленг.ссылка.SoftReference, поскольку они позволяют настроить сборку мусора в некоторой степени.


да и нет. Нет, в этом нет ничего похожего на объект указателя в Java. Да в том смысле, что каждый объект является "умным указателем", то есть он подвергается сбору мусора и заботится о своей собственной жизни, так сказать.


нет, в Java нет указателей любого класса. В общем, вам не нужно смарт-указатели в любом случае, потому что у вас уже есть сборщик мусора на месте делает подсчет ссылок для автоматического управления циклом выделения/освобождения памяти.