Как проверить класс "instanceof" в Котлине?

в классе kotlin у меня есть параметр метода как объект (см. kotlin doc здесь ) для типа класс T. В качестве объекта я передаю разные классы, когда я вызываю метод. В Java мы можем сравнить класс, используя instanceof объекта, класс которого это.

поэтому я хочу проверить и сравнить во время выполнения, какой это класс?

Как проверить класс instanceof в kotlin?

5 ответов


использовать is.

if (myInstance is String) { ... }

или наоборот !is

if (myInstance !is String) { ... }

мы можем проверить, соответствует ли объект заданному типу во время выполнения, используя is оператор или его отрицаемая форма !is.

пример:

if (obj is String) {
    print(obj.length)
}

if (obj !is String) {
    print("Not a String")
}

другой пример, в случае нестандартного объекта:

пусть, у меня есть obj типа CustomObject.

if (obj is CustomObject) {
    print("obj is of type CustomObject")
}

if (obj !is CustomObject) {
    print("obj is not of type CustomObject")
}

можно использовать is:

class B
val a: A = A()
if (a is A) { /* do something */ }
when (a) {
  someValue -> { /* do something */ }
  is B -> { /* do something */ }
  else -> { /* do something */ }
}

попробуйте использовать ключевое словоis официальная ссылка на страницу

if (obj is String) {
    // obj is a String
}
if (obj !is String) {
    // // obj is not a String
}

объединение when и is:

when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

скопировал из официальная документация