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?
Utilisez is
.
if (myInstance is String) { ... }
ou l'inverse !is
if (myInstance !is String) { ... }
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")
}
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
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 */ }
}
Essayez d’utiliser le mot clé appelé is
référence de page officielle
if (obj is String) {
// obj is a String
}
if (obj !is String) {
// // obj is not a String
}
Autre solution: KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment?.tag == "MyFragment")
{}
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
}
}