Kotlin:null 不能是非 null 类型的值
Posted
技术标签:
【中文标题】Kotlin:null 不能是非 null 类型的值【英文标题】:Kotlin : null cannot be value of non null type kotlin 【发布时间】: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 是一个很好的起点。 【参考方案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()
会帮助你。
【讨论】:
以上是关于Kotlin:null 不能是非 null 类型的值的主要内容,如果未能解决你的问题,请参考以下文章
null 不能强制转换为非 null 类型 kotlin.String NullPointer 异常
kotlin.TypeCastException: null 不能转换为非 null 类型 com.midsizemango.databasekotlin.Note
null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN
致命异常 java.lang.NullPointerException: null 不能转换为非 null 类型 kotlin.String
Android Kotlin:null 不能转换为非 null 类型 com.android.app.ui.category.CategoryAdapter.ViewHolder 想要在 recycl