Перевести объект [] в Kotlin - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть следующий код, который я перевел на Kotlin:

if (intent.action == SMS_RECEIVED) {
    // retrieves a map of extended data from the intent
    val dataBundle = intent.extras
    if (dataBundle != null) {
        val mypdu = dataBundle.get("mypdu")

        mypdu.length... (NOT WORKING)

    }
}

В частности, создание переменной mypdu было таким же, как в Java:

Object[] mypdu = (Object[]) dataBundle.get("mypdu");

И я не могу перевести это на Kotlin. Я не могу использовать следующее:

val mypdu = dataBundle.get("mypdu") as (Object[])

И кажется, что среда IDE хочет, чтобы я определил переменную как Any, и тогда я не могу получить доступ к ее свойству length, как хочу. Как я могу перевести эту строку в Kotlin?

1 Ответ

2 голосов
/ 13 февраля 2020

Вы можете использовать это:

val mypdu = dataBundle.get("mypdu") as Array<Any?>

Обратите внимание, что я пометил элементы Array как Any?, потому что в Java у нас нет нулевого безопасного компилятора. Таким образом, вы не столкнетесь с неприятными NPE позже.

Также для доступа к длине массива используйте свойство size, например:

val length = mypdu.size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...