private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
Her ikisi de değiştirilebilir listedir, o zaman iki anahtar kelimenin amacı nedir mutableListOfveya ArrayList?
yoksa büyük bir fark var mı?
Yanıtlar:
İkisi arasındaki tek fark, niyetinizi iletmektir.
Eğer yazarken val a = mutableListOf(), "Ben bir değişken listesini istiyorum, ve özellikle uygulanması umurumda değil" diyorsun. Bunun yerine yazarken val a = ArrayList()"özellikle istiyorum" diyorsun ArrayList.
Pratikte, Kotlin'in JVM'ye derlemesinin mevcut uygulamasında, çağırma bir mutableListOfüretecektir ArrayListve davranışta hiçbir fark yoktur: liste oluşturulduktan sonra, her şey aynı şekilde davranacaktır.
Şimdi, Kotlin'in gelecekteki bir sürümünün mutableListOffarklı bir liste türü döndürecek şekilde değiştiğini varsayalım .
Olmasındansa, Kotlin ekibi bu değişikliği ancak yeni uygulamanın çoğu kullanım durumu için daha iyi çalıştığını düşünürlerse yapacaktır. mutableListOfo zaman bu yeni liste uygulamasını şeffaf bir şekilde kullanmanızı sağlar ve bu daha iyi davranışı ücretsiz olarak alırsınız. mutableListOfSenin davan gibi geliyorsa devam et.
Öte yandan, belki de probleminiz hakkında düşünmek için epey zaman harcadınız ve bunun ArrayList gerçekten probleminiz için en uygun olduğunu düşündünüz ve yetersiz bir şeye geçme riskini almak istemiyorsunuz. O zaman muhtemelen ya ArrayListdoğrudan kullanmak ya da arrayListOffabrika işlevini ( ArrayList-özel bir analog'a mutableListOf) kullanmak istersiniz .
mutableListOf<T>()bir satır içi işlev çağrısıdır
MutableList<T>. Bugün itibariyle, mutableListOfbir örneğini döndürüyor ArrayList.
ArrayList<String>() yapıcı bir çağrıdır ve satır içi olamaz.
Başka bir deyişle, verilen:
val a = mutableListOf<String>()
val b = ArrayList<String>()
a tipte MutableList<String>b tipte ArrayList<String>Çalışma zamanında hem ave hem de bbir örneğini tutar ArrayList.
İle birleştirildiğinde Not inlining özellikle faydalı olduğu tipi şeyleşme gerekli kılan, listOf, mutableListOfgibi ve.
ave bfarklı bildirilmiş türe sahip - bu nedenle derleme zamanında bir fark var.
val b = arrayListOf<String>()
Kaynaklarda görebileceğiniz gibi :
public inline fun <T> mutableListOf(): MutableList<T> = ArrayList()
Yani, fark yok, sadece bir kolaylık yöntemi.
mutableListOfneArrayListde anahtar kelimeler