java - 将 Object[] 翻译为 Kotlin

标签 java kotlin

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

相关文章:

java - 枚举类型的约束泛型类型以实现某些接口(interface)

java - 初始化跟踪后端失败

java - 通过派生类访问Java中定义的静态内部类

kotlin - Gradle build 在 WSL 上什么都不做

android - Butterknife 7.x 是否适用于 Kotlin M14?

java - 如何将 JScrollPane 调整为其包含的 JTree

java - 计算最大 10^16 的 totient 函数之和

java - 我的 for 循环不会重新运行 in.nextLine 的输入?

kotlin - 为什么非详尽的when 表达式会导致编译器错误,而when 语句却不会?

java - Kotlin 中 Java static final 字段的等价物是什么?