在可能为空的接收器类型的数组列表中,只允许安全或非空的确定的呼叫
刚开始使用kotlin进行android开发。我的arraylist被声明为这样 –
var day1: ArrayList<DietPlanDetailModel>? = null
现在我试图通过它的位置访问一个元素
val dietPlan= day1[position]
但我正在编译时间错误,
在可能为空的接收器类型的数组列表中,只允许安全或非空的确定的呼叫
为什么我得到这个错误,我该如何解决?
问题是,你定义的ArrayList
为nullable
。 你有两个选择:
1)不要定义变量nullable
(这取决于你的代码): var day1: ArrayList<DietPlanDetailModel> = ArrayList()
2)访问你的数据结构与空检查: val dietPlan= day1?.get(position)
你告诉编译器你的变量可以是null(并且赋值为null)。
day1[position]
基本上是day1.get(position)
,如果day1
为null
,它会和NPE一起崩溃 – > null.get(position)
如果你能保证day1
将被初始化id建议lateinit
或者直接分配新的Arraylist声明。 当然,简单的day1?.get(position)
工作正常。
如定义的那样, day1
可以为null
但通过执行[]
来调用函数,这与调用day1.get(index)
基本相同。
这可以抛出一个NullpointerException
,Kotlin编译器试图预先处理。 因此,只允许这样的安全呼叫: day1?.get()
。
- 带有产品风味和Kotlin的ClassNotFoundException
- Kotlin为Android和静态最终的内部类
- 警告:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于“源”1.8
- SimpleDraweeView上的setImageURI:加载图像时的回调 – Android
- 在布局中使用自定义Kotlin视图“无法找到以下类”
- Android室数据库 – 未解决的参考@Entity和其他注释
- Android Kotlin Mvp类代表团
- Android Studio 3.0 beta2
- 在onCreateView android视图是null