Результат копирования data‑класса в Kotlin

Программа не компилируется: const val нельзя использовать для объекта Cat. Если заменить const val на val, вывод будет Cat(age=21, name=Sam).

Короткий ответ

Что ответить на собеседовании

Программа не компилируется: const val нельзя использовать для объекта Cat. Если заменить const val на val, вывод будет Cat(age=21, name=Sam).

Подробный разбор

Ответ с пояснениями

Условие

Определите, какой текст будет напечатан в консоль после запуска приведённой программы.

data class Cat(
    val age: Int = 20,
    val name: String = "Sam"
)

const val defaultCat: Cat = Cat()

fun main(args: Array<String>) {
    println(defaultCat.copy(age = 21))
}

Ответ

Программа не компилируется: const val нельзя использовать для объекта Cat. Если заменить const val на val, вывод будет Cat(age=21, name=Sam).

Константы Kotlin ограничены поддерживаемыми примитивными типами и String и требуют константного выражения. Вызов конструктора Cat() таким выражением не является. После исправления copy создаёт новый экземпляр с age = 21, сохраняя name; defaultCat при этом остаётся с исходным age = 20.

Источник: kotlinlang.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее