Sobes.tech
Junior — Middle

Bir nesne içinde effectively final olarak ilan edilen bir değişkenin değerini değiştirebilir miyiz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da "effectively final" terimi, bir değişkenin başlatıldıktan sonra değiştirilmediği anlamına gelir, ancak açıkça final anahtar kelimesiyle ilan edilmemiştir. Bu, örneğin, bu tür değişkenlerin lambda ifadelerinde veya anonim sınıflarda kullanılması için önemlidir.

Bir değişken effectively final olarak ilan edilirse, değerini değiştiremezsiniz — yeni bir değer atamaya çalışmak derleme hatasına yol açar.

Ancak, bu değişken bir nesneye referans veriyorsa, nesnenin durumu değiştirilebilir, çünkü değişen şey referans değil, nesnenin iç alanlarıdır. Örneğin:

final List<String> list = new ArrayList<>();
list.add("yeni öğe");  // Bu geçerlidir

// list = new ArrayList<>();  // Hata, referansı değiştiremezsiniz

Bu nedenle, değişkenin değeri (referans) değiştirilemez, ancak ona referans veren nesnenin içeriği değiştirilebilir.