Функция isInstance

Функция isInstance проверяет, является ли объект экземпляром указанного класса или его подкласса. Применяется для проверки типа во время выполнения программы (runtime type checking). Функция доступна через объект Class и возвращает true если объект принадлежит к указанному типу, или false в противном случае.

Синтаксис

kotlinval className: Class<*>
val result: Boolean = className.isInstance(obj)

Пример

Проверим, является ли объект экземпляром класса String:

kotlinval obj: Any = "Hello, Kotlin!"
val stringClass = String::class.java
val res: Boolean = stringClass.isInstance(obj)
println(res)

Результат выполнения кода:

kotlinBoolean true

Пример

Проверим, является ли объект экземпляром класса Int:

kotlinval obj: Any = "Hello, Kotlin!"
val intClass = Int::class.java
val res: Boolean = intClass.isInstance(obj)
println(res)

Результат выполнения кода:

kotlinBoolean false

Пример

Проверим принадлежность объекта к классу-наследнику:

kotlinopen class Animal
class Dog : Animal()

val animal: Animal = Dog()
val animalClass = Animal::class.java
val res: Boolean = animalClass.isInstance(animal)
println(res)

Результат выполнения кода:

kotlinBoolean true

Пример

Использование isInstance с массивами:

kotlinval array: Any = intArrayOf(1, 2, 3, 4, 5)
val arrayClass = IntArray::class.java
val res: Boolean = arrayClass.isInstance(array)
println(res)

Результат выполнения кода:

kotlinBoolean true

Пример

Сравнение с оператором is:

kotlinval 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")

Результат выполнения кода:

kotlinUsing 'is' operator: true
Using isInstance: true

Смотрите также

  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово init,
    которое используется для блоков инициализации
  • ключевое слово this,
    которое ссылается на текущий экземпляр класса