Как проверить класс "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())
}
скопировал из официальная документация