entre - val y var kotlin
¿Cómo verificar la clase "instanceof" en kotlin? (7)
Combinando
when
y
is
:
when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}
copiado de la documentación oficial
En la clase kotlin, tengo el parámetro del método como objeto (Ver kotlin doc
here
) para el tipo de clase
T.
Como objeto, estoy pasando diferentes clases cuando estoy llamando al método.
En Java podemos comparar la clase usando la
instanceof
de objeto de qué clase es.
¿Entonces quiero verificar y comparar en tiempo de ejecución qué clase es?
¿Cómo puedo verificar la instancia de clase en kotlin?
El uso
is
if (myInstance is String) { ... }
o lo contrario
!is
if (myInstance !is String) { ... }
Intente usar la palabra clave llamada
is
referencia de página oficial
if (obj is String) {
// obj is a String
}
if (obj !is String) {
// // obj is not a String
}
Otra solución: KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment?.tag == "MyFragment")
{}
Podemos verificar si un objeto se ajusta a un tipo dado en tiempo de ejecución utilizando el operador
is
o su forma negada
!is
Is.
Ejemplo:
if (obj is String) {
print(obj.length)
}
if (obj !is String) {
print("Not a String")
}
Otro ejemplo en caso de objeto personalizado:
Vamos, tengo un
obj
de tipo
CustomObject
.
if (obj is CustomObject) {
print("obj is of type CustomObject")
}
if (obj !is CustomObject) {
print("obj is not of type CustomObject")
}
Puedes marcar así
private var mActivity : Activity? = null
entonces
override fun onAttach(context: Context?) {
super.onAttach(context)
if (context is MainActivity){
mActivity = context
}
}
Puedes usar
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 */ }
}