Apa arti dari "objek pengiring"? Sejauh ini saya telah menggunakannya hanya untuk mengganti Java static
ketika saya membutuhkannya.
Saya bingung dengan:
- Mengapa disebut "teman"?
- Apakah ini berarti bahwa untuk membuat beberapa properti statis , saya harus mengelompokkannya di dalam
companion object
blok? - Untuk secara instan membuat instance singleton yang dicakup dalam suatu kelas, saya sering menulis
:
companion object {
val singleton by lazy { ... }
}
yang sepertinya merupakan cara tidak langsung untuk melakukannya. Apa cara yang lebih baik?
sumber
Objek ini adalah pendamping dari instance. IIRC ada diskusi panjang di sini: mendatang-ubah-kelas-objek-dipikirkan kembali
Iya. Setiap properti / metode "statis" harus ditempatkan di dalam pendamping ini.
Anda tidak membuat instance singleton secara instan. Itu dibuat saat mengakses
singleton
untuk pertama kalinya.Lebih baik pergi dengan
object Singleton { }
mendefinisikan kelas tunggal. Lihat: Deklarasi Objek Anda tidak perlu membuat instanceSingleton
, cukup gunakan seperti ituSingleton.doWork()
Perlu diingat bahwa Kotlin menawarkan hal-hal lain untuk mengatur kode Anda. Sekarang ada alternatif untuk fungsi statis sederhana misalnya Anda bisa menggunakan Fungsi Tingkat Top.
sumber
Mengapa disebut "teman"?
Deklarasi objek di dalam kelas dapat ditandai dengan kata kunci pengiring:
Anggota objek pendamping dapat dipanggil dengan hanya menggunakan nama kelas sebagai kualifikasi:
Jika Anda hanya menggunakan 'objek' tanpa 'teman', Anda harus melakukan ini:
Dalam pemahaman saya, 'pendamping' berarti objek ini adalah pendamping dengan kelas outter.
sumber
Kita dapat mengatakan bahwa teman sama dengan "Blok Statis" seperti Jawa, tetapi dalam kasus Kotlin tidak ada konsep Blok Statis, daripada teman masuk ke bingkai.
Cara mendefinisikan blok pengiring:
Metode panggilan blok pendamping, langsung dengan nama kelas
sumber