web-dev-qa-db-fra.com

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

Dans la classe kotlin, j'ai un paramètre de méthode en tant qu'objet (Voir la documentation kotlin ici ) pour le type de classe T. En tant qu'objet, je passe différentes classes lorsque j'appelle une méthode. Dans Java, nous pouvons comparer une classe à l'aide de instanceof d'objet, de quelle classe il s'agit.

Donc, je veux vérifier et comparer au moment de l'exécution quelle classe il s'agit?

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

59
pRaNaY

Utilisez is.

if (myInstance is String) { ... }

ou l'inverse !is

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

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

n autre exemple dans le cas d'un objet personnalisé:

Supposons que 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")
}
11
Avijit Karmakar

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

10
methodsignature

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

Essayez d’utiliser le mot clé appelé isréférence de page officielle

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

Autre solution: KOTLIN

val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)

if (fragment?.tag == "MyFragment")
{}
0
Álvaro Agüero

Vous pouvez vérifier comme ça

 private var mActivity : Activity? = null

ensuite

 override fun onAttach(context: Context?) {
    super.onAttach(context)

    if (context is MainActivity){
        mActivity = context
    }

}
0
bala