Pregunta simple pero no vi ninguna respuesta en Internet. Entonces, ¿cómo puedo obtener la dirección de un objeto en Kotlin?
Para identificar un objeto durante la depuración, use System.identityHashCode() .
La dirección de un objeto no se puede obtener en Kotlin/JVM y también puede cambiar a medida que se ejecuta GC, por lo que no se puede usar para identificar un objeto.
Kotlin en JVM no admite punteros y, por lo tanto (aparte de algunos trucos con la clase sun.misc.Unsafe), no hay forma de obtener la dirección de una variable.
Sin embargo, Kotlin/Native (al menos desde enero de 2018) admite punteros que le permiten interactuar con el código C. El siguiente programa muestra cómo obtener la dirección de una variable que se ha asignado en el montón nativo. No parece posible asignar una variable a una dirección particular.
// Kotlin Native v0.5 import kotlinx.cinterop.* fun main(args: Array<String>) { val intVar = nativeHeap.alloc<IntVar>() intVar.value = 42 with(intVar) { println("Value is $value, address is $rawPtr") } nativeHeap.free(intVar) }resultados en:
Value is 42, address is 0xc149f0