Выбор ответа Junior Основы языка обновлено

Неявное приведение Int к Long

Вопрос

Что будет с кодом val i: Int = 5; val l: Long = i?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ошибка компиляции: нужно явное i.toLong(). В Kotlin нет неявных расширяющих преобразований чисел, в отличие от Java.

Варианты ответа

  1. Скомпилируется, l станет 5L автоматически
  2. Ошибка компиляции: нужно явное i.toLong()правильный ответ
  3. Скомпилируется с предупреждением о сужении
  4. Упадёт в рантайме с ClassCastException

Разбор

В Kotlin нет неявных расширяющих преобразований чисел, в отличие от Java. Поэтому присвоение Int в Long это ошибка типов на этапе компиляции, нужно i.toLong(). Исключение только для литералов: val l: Long = 5 компилируется, потому что литерал сразу получает нужный тип. До рантайма дело не доходит.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме