Kotlin:无法在列表中获取对象 getter

Oto*_*Oto 1 getter android object kotlin

我的问题如下:

我创建了一个返回列表的函数。该函数首先创建一个包含 2 个 Int 和一个 String 的列表,然后添加一个名为“Person”(具有姓名和年龄)的对象,然后返回该列表。在我的 main 中,我创建了一个 var 来获取该函数的值,因此它成为列表。我的问题是,当我尝试获取,例如 list[3](即那个人)时,我无法调用我创建的方法 getName() 或 getAge()。如您所见,我仍然是 Kotlin 的菜鸟。我的理论是类型列表无法获得特定的对象方法,对吗?或者还有别的什么吗?提前致谢!

代码:

fun listTest(): List<Any>{
val list = mutableListOf(1, 3, "Hola")
val person = Person("John", 34)
list.add(person)

return list}

fun main(){
var list = listTest()
var person = list[3].getName()
Run Code Online (Sandbox Code Playgroud)

我无法从列表 [3] 中写入 getName(),Kotlin 无法识别它。当然,我在类中创建了方法。

小智 5

问题是因为列表被初始化为Any. 只是类型案例是这样的:

if(list[3] is Person) {
    (list[3] as Person).getName()
}
Run Code Online (Sandbox Code Playgroud)

  • 更短的形式: `(list[3] as? Person)?.getName()` (如果底层列表恰好是 LinkedList 之类的东西,则效率更高。 (6认同)