Kotlin 列表中的类型侵权

问题描述 投票:0回答:1

我有 2 个列表,其中一个称为 mod:

listOf("Money", 1)

还有一个名为 splitSave,它是一个包含 113 项的字符串长列表。

我试图根据第一个列表的一个索引访问 splitSave 列表的索引。我尝试用这一行来做到这一点:

println("$mod[1]: ${splitSave[mod[1]]}")
编译时,我收到类型不匹配错误,因为 mod[1] 的类型是“any”

如何显式定义类型,或者让 Kotlin 正确推断其类型?

它应该能够找到正确的索引,尽管它会出错并停止程序。

list kotlin types
1个回答
0
投票

由于

mod
同时包含String和Int,因此其类型将被推断为List。这是正确的,因此您对列表的类型无能为力。但是,如果您想获取
mod[1]
中包含的值并将其视为 Int,则可以在从列表中检索该值后将该值转换为 Int,如下所示:

val splitSave = listOf("a", "b", "c", "d", "e")
val mod = listOf("Money", 1)

val modIndex1 = mod[1] as Int

println("$modIndex1: ${splitSave[modIndex1]}")

转换允许您告诉编译器将该值视为 Int,因此

modIndex1
的类型将为 Int。但请注意,如果您尝试将 String 转换为 Int,您将得到 ClassCastException。

© www.soinside.com 2019 - 2024. All rights reserved.