Value classes (раньше назывались inline classes) — это функция Kotlin, предназначенная для оборачивания одного значения без затрат на выделение памяти во время выполнения. Компилятор встраивает обёрнутое значение прямо в места использования, избегая ненужного создания объектов и улучшая производительность.
@JvmInline
value class Password(val value: String)
Это создаёт отдельный тип Password, который во время выполнения ведёт себя как обычная String — без затрат на обёртывание.
Password и String трактуются компилятором как отдельные типы, предотвращая случайное неправильное использованиеValue classes имеют строгие ограничения по сравнению с обычными классами:
init-блоки не допускаютсяОбычный класс-обёртка всегда требует выделения памяти в heap и накладных расходов на объект во время выполнения. Value class избегает этого — компилятор заменяет обёртку базовым типом везде, где это возможно, благодаря чему она ведёт себя как абстракция с нулевой стоимостью в большинстве случаев.
Главный компромисс — это строгие структурные ограничения, но для случаев, когда тебе просто нужен типизированный псевдоним с семантическим значением для одного значения, value classes — это идиоматичное и эффективное решение на Kotlin.
Value классы должны иметь ровно одно свойство в primary конструкторе и не могут содержать никаких init блоков или дополнительных backing полей.
Новый — ещё не проверен сообществом
Вы