Bu, JDK'dan HashMap sınıfında keySet() yöntemi. Yazar neden alanı (keySet) yerel değişken ks'ye atadı?Yerel değişken için örnek alanı atama
public Set<K> keySet() {
Set<K> ks;
return (ks = keySet) == null ? (keySet = new KeySet()) : ks;
}
Yukarıdaki ve aşağıdaki arasındaki fark nedir? Bunun iplik güvenliği ile ilgisi var mı?
transient volatile Set<K> keySet;
yerel değişken atama kullanarak sadece bir kez okuyarak, uçucu olduğundan şudur: abstract class AbstractMap<K,V>
yılında keySet
beyanında bakarsak olarak
public Set<K> keySet() {
return (keySet == null ? (keySet = new KeySet()) : keySet;
}
Belki de; Yine de, değişkenin boş olmadığından ve bu değerin döndürülmesinden emin olunurken bir sınıf düzeyi değişkenini ayarlamaya çalışıyor gibi görünüyor. Bunun ötesinde bir ipucu yok. Bütün sınıfa bakmam gerek. –
Muhtemelen niyetin netliği için – alphablue
http://stackoverflow.com/q/28975415/3182664 http://stackoverflow.com/q/2785964/3182664 http://stackoverflow.com/q/ dosyasının kopyası olarak düşünülebilir. 37776179/3182664 http://stackoverflow.com/q/32619269/3182664 ve muhtemelen bazı diğerleri .... – Marco13