Я не мог найти нигде о том, как объекты, объекты-компаньоны и ленивые работают с памятью. Может ли кто-нибудь объяснить мне, как они работают с памятью?
благодаря
Это довольно неопределенный вопрос, на который можно ответить, глядя на байт-код.
Объявление объекта – одноэлементное. Он имеет статическое поле под названием INSTANCE
которое инициализируется в статическом блоке ( <clinit>
).
Companion является своего рода внутренним классом, но является singleton и ведет себя как объявление объекта.
Ленивый делегат (каждый делегат) – отдельный объект. Каждый раз, когда вы создаете ленивое поле, создается экземпляр объекта-делегата.