Чтобы подтвердить другие ответы и исправить то, что кажется распространенным недоразумением в Kotlin, я хотел бы выразить это следующим образом:
Приведение не преобразование значение в другой тип; приведение обещает компилятору, что значение уже равно нового типа.
Если у вас была ссылка Any
или Number
, которая указала на Float
object:
val myNumber: Any = 6f
Тогда вы можете привести его к Float:
myNumber as Float
Но это работает только потому, что объект уже равен a Float
; мы просто должны сказать компилятору. Это не сработает для другого типа цифр c; следующее даст ClassCastException
:
myNumber as Double
в преобразование числа, вы не используете приведение; Вы используете одну из функций преобразования , например:
myNumber.toDouble()
Может возникнуть некоторая путаница из-за того, что такие языки, как C и Java были довольно слабы по отношению к цифрам c Типы и выполнять тихие преобразования во многих случаях. Это может быть довольно удобно; но это также может привести к тонким ошибкам. Для большинства разработчиков низкоуровневое переключение битов и вычисления менее важны, чем 40 или даже 20 лет go, и поэтому Kotlin перемещает некоторые из специальных числовых случаев c в стандартную библиотеку и требует явные преобразования, обеспечивающие дополнительную безопасность.