【问题标题】:Kotlin : null cannot be value of non null type kotlinKotlin:null 不能是非 null 类型的值
【发布时间】:2018-07-06 11:27:33
【问题描述】:

如何在 Kotlin 中为 ArrayList 分配空值?

我正在尝试将 null 值添加到我的自定义 ArrayList 像这样

var mList = ArrayList<CustomClass>()
mList.add(null)

在 java 中是可能的,但我如何在 Kotlin 中实现这一点? 我得到了

null 不能是非 null 类型 kotlin 的值

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

【问题讨论】:

  • Kotlin 的 null docs 是一个很好的起点。

标签: android arraylist android-recyclerview kotlin


【解决方案1】:

那你得这样写。

var mList = ArrayList<CustomClass?>()
mList.add(null)

您必须在 ArrayList 中的类型之后添加一个?,因为? 允许我们放置一个空值。

【讨论】:

    【解决方案2】:

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

    var a = "text" //inferred type is `String`
    a = null //doesn’t compile!
    

    另一方面,如果您希望变量也能够指向null,则类型显式地用问号注释:

    var a: String? = "text"
    a = null //Ok!
    

    在您的示例中,ArrayList 使用泛型类型 CustomClass 声明,该类型不可为空。您需要改用可空类型CustomClass?。此外,您可以使用Kotlin’s standard library functions for creating instances of lists,最好是只读

    var mList = listOf<CustomClass?>(null)
    

    否则mutableListOf()arrayListOf() 会帮助你。

    【讨论】:

      猜你喜欢
      • 2020-11-28
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多