Tüm olmayan Mutable____
koleksiyonları derleme zamanı salt okunur türleri varsayılan olarak değil değişmez bulunmaktadır. Aşağıdaki kod parçacığını bakınız:
fun main(args: Array<String>) {
// Explanation for ArrayList(listOf()) later down the post
val list: List<Int> = ArrayList(listOf(1, 2, 3))
println(list) // [1, 2, 3]
// Fails at compile time
// list.add(4)
// Uh oh! This works at runtime!
(list as MutableList<Int>).add(4)
println(list) // [1, 2, 3, 4]
}
gerçekten Guava en Immutable____
koleksiyonları düşünün bir değişmez liste var için: KOTLIN standart çalışma zamanı fonksiyonunun bazı ya unmodifiable olan koleksiyonları döndürebilir o
import com.google.common.collect.ImmutableList
fun main(args: Array<String>) {
val list: List<Int> = ImmutableList.of(1, 2, 3)
println(list) // [1, 2, 3]
// Fails at compile time
// list.add(4)
// Fails at runtime, as expected
(list as MutableList<Int>).add(4)
println(list) // [1, 2, 3, 4]
}
unutmayın, değil yeniden boyutlandırılabilir, vb. Yani, salt okunur bir koleksiyonu doğrudan değiştirilebilen bir dosyaya dönüştürdüğünüzde tüm bahisler kapalıdır. Şu anda Örneğin
, listOf()
(bu gelecekte değişebilir!) Arrays.asList(T...)
aracılığıyla vararg parametreler dizisine etrafında java.util.Arrays.ArrayList
döndürür. Bu "liste" değiştirilebilir, ancak bir diziyi yeniden boyutlandıramayacağınız için öğeler hiçbir zaman eklenemez veya kaldırılamaz. Daha fazla bilgi için bkz. Arrays.asList(T...)
javadoc.
Belirli bir koleksiyondan gerçekten bir koleksiyon almak istiyorsanız, .toMutableList()
numaralı telefonu kullanarak kopya oluşturmayı düşünün.
import com.google.common.collect.ImmutableList
fun main(args: Array<String>) {
val list: List<Int> = ImmutableList.of(1, 2, 3)
val copy = list.toMutableList()
copy.add(4)
println(copy) // [1, 2, 3, 4]
println(list) // [1, 2, 3]
}
Ben KOTLIN aşina değilim, ama guava Java kütüphanesi Eğer değişken 'ArrayList' sarmak için kullanabilirsiniz bir' ImmutableList' türü vardır: Bu, herhangi bir koleksiyon üzerinde çalışacak. – pathfinderelite
değiştirilemezList (ArrayList()) –
Çalışmaları. Cevap olarak gönderin lütfen. – WindRider