Di Jawa kita bisa melakukan hal berikut
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Tetapi jika kita menulis ulang ke Kotlin secara langsung seperti di bawah ini
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Saya mendapatkan kesalahan karena tidak menemukan add
dan remove
berfungsi dari Daftar saya
Saya bekerja di sekitar casting ke ArrayList, tapi itu aneh perlu melemparkannya, sementara di Jawa casting tidak diperlukan. Dan itu mengalahkan tujuan memiliki Daftar kelas abstrak
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Apakah ada cara bagi saya untuk menggunakan Daftar tetapi tidak perlu melemparkannya, seperti apa yang bisa dilakukan di Jawa?
myList = null
dan kemudian panggilan tambahkan tanpa!!
. Anda dapat mengatasinya dengan menggunakanlateinit
kata kunci di depan properti Anda sepertilateinit var myList: List<Int>
ini : dengan cara ini Anda tidak perlu segera menginisialisasi daftar, tetapi Anda menjamin kepada kompiler bahwa Anda akan menginisialisasinya sebelum menggunakan daftar tersebut pertama kali. Ini adalah solusi yang lebih halus, tetapi ini menempatkan Anda sebagai pengembang.