Функция isInstance
Функция isInstance проверяет, является ли объект экземпляром указанного класса или его подкласса.
Применяется для проверки типа во время выполнения программы (runtime type checking).
Функция доступна через объект Class и возвращает true если объект принадлежит к указанному типу,
или false в противном случае.
Синтаксис
val className: Class<*>
val result: Boolean = className.isInstance(obj)
Пример
Проверим, является ли объект экземпляром класса String:
val obj: Any = "Hello, Kotlin!"
val stringClass = String::class.java
val res: Boolean = stringClass.isInstance(obj)
println(res)
Результат выполнения кода:
Boolean true
Пример
Проверим, является ли объект экземпляром класса Int:
val obj: Any = "Hello, Kotlin!"
val intClass = Int::class.java
val res: Boolean = intClass.isInstance(obj)
println(res)
Результат выполнения кода:
Boolean false
Пример
Проверим принадлежность объекта к классу-наследнику:
open class Animal
class Dog : Animal()
val animal: Animal = Dog()
val animalClass = Animal::class.java
val res: Boolean = animalClass.isInstance(animal)
println(res)
Результат выполнения кода:
Boolean true
Пример
Использование isInstance с массивами:
val array: Any = intArrayOf(1, 2, 3, 4, 5)
val arrayClass = IntArray::class.java
val res: Boolean = arrayClass.isInstance(array)
println(res)
Результат выполнения кода:
Boolean true
Пример
Сравнение с оператором is:
val obj: Any = "Test"
// Способ 1: оператор is
val res1: Boolean = obj is String
println("Using 'is' operator: $res1")
// Способ 2: функция isInstance
val stringClass = String::class.java
val res2: Boolean = stringClass.isInstance(obj)
println("Using isInstance: $res2")
Результат выполнения кода:
Using 'is' operator: true
Using isInstance: true