Оператор is
Оператор is проверяет, принадлежит ли объект к указанному типу.
Может использоваться как в условных выражениях, так и для автоматического
приведения типов в соответствующем блоке кода. Работает с классами и интерфейсами.
Синтаксис
obj is Type
obj !is Type
Пример
Проверим, является ли переменная строкой:
val obj: Any = "hello"
if (obj is String) {
println(obj.length)
}
Результат выполнения кода:
Int 5
Пример
Использование отрицательной формы оператора:
val obj: Any = 123
if (obj !is String) {
println("Not a string")
}
Результат выполнения кода:
String "Not a string"
Пример
Автоматическое приведение типов после проверки:
fun printLength(obj: Any) {
if (obj is String) {
// obj автоматически приводится к String
println(obj.length)
}
}
printLength("kotlin")
Результат выполнения кода:
Int 6
Пример
Проверка типа в выражении when:
fun describe(obj: Any): String = when (obj) {
is String -> "String with length ${obj.length}"
is Int -> "Integer with value $obj"
else -> "Unknown type"
}
println(describe("test"))
println(describe(10))
Результат выполнения кода:
String "String with length 4"
String "Integer with value 10"
Смотрите также
-
оператор
as,
который выполняет приведение типов