'Var'必须初始化 Kotlin



你们中的一些人可以帮我解决这个小问题吗?我是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

怎么了?谢谢大家!

在调用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")  
}

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

  1. init,默认值为。。。var temp:String=">
  2. 带有lateinit关键字的init(意味着您稍后将初始化(,如。。。lateinit var temp:String

在您的情况下,您没有使用lateinit。因此,您需要使用默认值初始化变量

var test = Catalog()

或者如果你想初始化为空

var test:Catalog? = null

最新更新