Kotlin:null不能是非null类型kotlin的值

Moh*_*har 10 android arraylist kotlin android-recyclerview

如何ArrayList在Kotlin中分配空值?

我想尝试将null值添加到我的自定义ArrayList

var mList = ArrayList<CustomClass>()
mList.add(null)
Run Code Online (Sandbox Code Playgroud)

在java中它可能但我怎样才能在Kotlin中实现这一点?我正进入(状态

null不能是非null类型kotlin的值

我需要插入null值以在RecyclerView中加载更多功能

Avi*_*kar 14

然后你必须以这种方式写它.

var mList = ArrayList<CustomClass?>()
mList.add(null)
Run Code Online (Sandbox Code Playgroud)

你必须?在ArrayList中添加一个类型,因为?允许我们放置一个空值.


s1m*_*nw1 6

Kotlin的类型系统区分可空类型和非空类型。例如,如果您声明一个简单String变量并让编译器推断其类型,则它不能保存null

var a = "text" //inferred type is `String`
a = null //doesn’t compile!
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您希望变量也能够指向null,则该类型会显式地带有问号:

var a: String? = "text"
a = null //Ok!
Run Code Online (Sandbox Code Playgroud)

在您的示例中,ArrayList使用通用类型声明了,该类型CustomClass不能为null。您需要使用可为空的类型CustomClass?。另外,您可以利用Kotlin的标准库函数来创建列表实例,最好是只读实例

var mList = listOf<CustomClass?>(null)
Run Code Online (Sandbox Code Playgroud)

否则mutableListOf()还是arrayListOf()会帮助你的。