Как я могу получить адрес объекта в Котлине? - PullRequest
0 голосов
/ 08 января 2019

Простой вопрос, но я не видел ответов в интернете. Итак, как я могу получить адрес объекта в Котлине?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Чтобы идентифицировать объект во время отладки, используйте System.identityHashCode().

Адрес объекта не может быть получен в Kotlin / JVM, и он также может изменяться во время работы GC, поэтому его нельзя использовать для идентификации объекта.

0 голосов
/ 08 января 2019

Kotlin в JVM не поддерживает указатели и, следовательно, (кроме некоторых jiggery-pokery с классом sun.misc.Unsafe) нет способа получить адрес переменной.

Однако Kotlin / Native (по крайней мере, в январе 2018 года) поддерживает указатели, позволяющие ему взаимодействовать с C-кодом. Следующая программа показывает, как получить адрес переменной, которая была выделена в собственной куче. По-видимому, невозможно выделить переменную по определенному адресу.

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

Результат:

Value is 42, address is 0xc149f0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...