【发布时间】:2018-10-02 16:23:30
【问题描述】:
假设我有以下课程:
class Activity1: Activity {
private var objects = arrayListOf<MyObject>()
override fun onCreate(...) {
...
Thread {
getThoseObjects() {
this.runOnUiThread {
objects = it
//load a fragment using objects
val fragment = MyFragment.newInstance(objects)
}
}
}.start()
}
fun startActivity2() {
val i = Activity2.newIntent(objects)
...
}
}
class Activity2: Activity {
private lateinit var objects: ArrayList<MyObject>
override onCreate(...) {
objects = intent.getSerializableExtra(MY_KEY) as ArrayList<MyObject>
}
}
这是在这两个类中声明/初始化对象数组列表的公认最佳做法吗?
在 Activity1 中,我需要从服务器获取它并在片段中使用它,但如果需要也将它传递给 Activity2。我不想让它可以为空,但初始化空数组也感觉很奇怪。
在 Activity2 中,lateinit var(根据我的发现)似乎是处理该问题的最佳方法。
至于 getSerializableExtra 演员表中未经检查的演员表,我相信我可以忽略警告,但我希望有人有一个巧妙的技巧来避免它。
【问题讨论】: