Я перечитал множество вопросов о новичке в Java finalize()и обнаружил, что это немного сбивает с толку, что никто не дал понять, что finalize () - это ненадежный способ очистки ресурсов. Я видел, как кто-то комментирует, что он использует его для очистки соединений, что действительно страшно, поскольку единственный способ приблизиться к гарантии закрытия соединения - это реализовать try (catch) в конце концов.
Я не учился в CS, но я профессионально программирую на Java уже почти десять лет, и я никогда не видел, чтобы кто-нибудь реализовывал finalize()в производственной системе. Это по-прежнему не означает, что он не имеет смысла или что люди, с которыми я работал, делали это правильно.
Поэтому мой вопрос: какие варианты использования существуют для реализации, finalize()которые не могут быть обработаны более надежно с помощью другого процесса или синтаксиса в языке?
Пожалуйста, предоставьте конкретные сценарии или ваш опыт, просто повторения учебника по Java или окончательного использования по назначению недостаточно, поскольку цель этого вопроса не в этом.
finalize(). Однако код библиотеки платформы , например SocketInputStream, который управляет собственными ресурсами от имени вызывающей стороны, делает это, чтобы минимизировать риск утечек ресурсов (или использует эквивалентные механизмы, такие как PhantomReference, которые были добавлены позже). Таким образом, экосистема нуждается в них хотя 99,9999% разработчиков никогда не напишут.