Оператор as
Оператор as
выполняет приведение типа объекта к указанному типу.
Если приведение невозможно, выбрасывается исключение ClassCastException
.
Имеет две формы: обычное приведение as
и безопасное приведение as?
.
Синтаксис
Обычное приведение:
val obj: Any = "Hello"
val str: String = obj as String
Безопасное приведение:
val obj: Any = "Hello"
val str: String? = obj as? String
Пример
Приведение типа Any
к String
:
val obj: Any = "Kotlin"
val str: String = obj as String
println(str)
Результат выполнения кода:
String "Kotlin"
Пример
Попытка приведения несовместимых типов вызывает исключение:
val obj: Any = 123
try {
val str: String = obj as String
} catch (e: ClassCastException) {
println("Error: ${e.message}")
}
Результат выполнения кода:
Error: java.lang.Integer cannot be cast to java.lang.String
Пример
Безопасное приведение с оператором as?
возвращает null
при ошибке:
val obj: Any = 123
val str: String? = obj as? String
println(str)
Результат выполнения кода:
null
Пример
Приведение с проверкой типа через is
:
val obj: Any = "Hello"
if (obj is String) {
val length = obj.length
println(length)
}
Результат выполнения кода:
Int 5
Смотрите также
-
оператор
is
,
который проверяет тип объекта