Comment vérifier la classe "instanceof" dans kotlin?

Dans la classe kotlin, j'ai un paramètre de méthode comme objet (voir Kotlin doc ici) pour le type de classe T . En tant qu'objet, je passe différentes classes quand j'appelle la méthode. En Java, nous pouvons comparer la classe en utilisant instanceof de l'objet de quelle classe il s'agit.

Donc je veux vérifier et comparer à l'exécution quelle classe c'est?

Comment puis-je vérifier la classe instanceof dans kotlin?

37
demandé sur pRaNaY 2017-05-21 18:47:12

5 réponses

Utilisez is.

if (myInstance is String) { ... }

, Ou l'inverse !is

if (myInstance !is String) { ... }
72
répondu nhaarman 2017-05-23 18:11:59

Nous pouvons vérifier si un objet est conforme à un type donné à l'exécution en utilisant l'opérateur is ou sa forme niée !is.

Exemple:

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

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

Un autre exemple dans le cas D'un objet personnalisé:

Laisser, j'ai un obj de type CustomObject.

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

if (obj !is CustomObject) {
    print("obj is not of type CustomObject")
}
10
répondu Avijit Karmakar 2018-01-27 07:40:22

Vous pouvez utiliser 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 */ }
}
5
répondu ice1000 2017-05-21 15:55:42

Essayez d'utiliser le mot clé appelé is référence officielle de la page

if (obj is String) {
    // obj is a String
}
if (obj !is String) {
    // // obj is not a String
}
2
répondu Terril Thomas 2017-10-05 11:56:32

Combinaison de when et is:

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

Copié de documentation officielle

1
répondu methodsignature 2018-01-11 18:08:26