245 votes

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

Dans kotlin classe, j'ai paramètre de méthode d'objet (Voir kotlin doc ici ) pour la classe de type T. Comme objet, je suis de passage les différentes classes quand je suis à la méthode appelante. En Java, nous pouvons mesure de comparer la classe à l'aide d' instanceof d'objet de la classe qu'il est.

Je tiens donc à vérifier et comparer lors de l'exécution de la Classe qu'il est?

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

449voto

Niek Haarman Points 13931

Utilisez is .

 if (myInstance is String) { ... }
 

ou l'inverse !is

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

70voto

methodsignature Points 523

Combinaison des when et is :

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

copié de la documentation officielle

34voto

Avijit Karmakar Points 3827

Nous pouvons vérifier si un objet est conforme à un type donné au moment de l'exécution en utilisant l'opérateur is ou sa forme inversé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é:

Soit, 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")
}
 

9voto

ice1000 Points 3335

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 */ }
}
 

9voto

Terril Thomas Points 907

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X