'Var'必须被初始化Kotlin

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

你们中的一些人可以帮助我解决这个小问题吗?我对Kotlin和Android开发非常陌生!我不明白为什么这段代码会向我返回以下错误:

class Catalog {
var musicList: List<Music> = ArrayList()
}

class Music{
    var id: String = ""
}

fun main(args: Array<String>) {  
    var test: Catalog
    test.musicList[0] = "1"  
}

错误:

Variable 'test' must be initialized

怎么了?谢谢大家!

java class kotlin methods instance
2个回答
1
投票

您需要在调用musicList的getter之前实例化它:

fun main(args: Array<String>) {  
    var test = Catalog()
    test.musicList[0] = "1"  
}

此外,如果您不重新分配test的值,则可以将其声明为val

fun main(args: Array<String>) {  
    val test = Catalog()
    test.musicList[0] = "1"  
}

此后您将还有其他2个错误:

  1. 因为List是不可变的,所以您不能使用运算符[]来分配值

要解决它,您可以使用MutableList代替List

class Catalog {
    val musicList = mutableListOf<Music>()
}
  1. 您在索引0处没有任何项目,因此将出现超出范围的异常。要解决这个问题,您可以添加元素:
fun main(args: Array<String>) {  
    var test = Catalog()
    test.musicList += Music("1")  
}

0
投票

在Kotlin中,您可以通过两种方式初始化变量。

  1. 使用默认值初始化,例如... var temp:String =“”
  2. 使用lateinit关键字初始化(意味着您稍后会初始化),例如... lateinit var temp:String

在您不使用lateinit的情况下,您需要使用默认值初始化变量

var test = Catalog()

或者如果您想初始化为null

var test:Catalog? = null
© www.soinside.com 2019 - 2024. All rights reserved.