Допустим, у меня есть следующие классы:
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>
}
}
Является ли это общепринятой наилучшей практикой для объявления / инициализации массива объектов в обоих этих классах?
В Деятельности 1 Iнужно взять его с сервера и использовать во фрагменте, а также при необходимости передать в Activity2.Я не хочу делать его обнуляемым, но также кажется странным инициировать пустой массив.
В Activity2 переменная lateinit (из того, что я обнаружил) кажется лучшим способом справиться с этим.
Что касается неконтролируемого приведения из приведения getSerializableExtra, я уверен, что могу игнорировать предупреждение, но я бы хотел, чтобы у кого-то был хитрый прием, чтобы его избежать.