variable val entre diferencia definicion kotlin kotlin-extension

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