我将以下代码翻译成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?

最佳答案

您可以使用此:

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


请注意,我将Array的元素标记为Any?,因为在Java中,我们没有null安全编译器。这样一来,您以后就不会再遇到讨厌的NPE了。

另外,要访问数组的长度,请使用size属性,如下所示:

val length = mypdu.size

关于java - 将Object []转换成Kotlin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60202197/

10-13 03:34