Выбор ответа Junior Основы языка обновлено
Неявное приведение Int к Long
Вопрос
Что будет с кодом val i: Int = 5; val l: Long = i?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка компиляции: нужно явное i.toLong(). В Kotlin нет неявных расширяющих преобразований чисел, в отличие от Java.
Варианты ответа
- Скомпилируется,
lстанет5Lавтоматически - Ошибка компиляции: нужно явное
i.toLong()правильный ответ - Скомпилируется с предупреждением о сужении
- Упадёт в рантайме с
ClassCastException
Разбор
В Kotlin нет неявных расширяющих преобразований чисел, в отличие от Java. Поэтому присвоение Int в Long это ошибка типов на этапе компиляции, нужно i.toLong(). Исключение только для литералов: val l: Long = 5 компилируется, потому что литерал сразу получает нужный тип. До рантайма дело не доходит.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Почему в Kotlin нет тернарного оператора
Следующий вопрос
Сравнение упакованных Int через ===