Sobes.tech
Junior — Middle

Obyekt daxilində effektiv final kimi elan edilmiş dəyişənin dəyərini dəyişmək mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da "effectively final" termini, dəyişənin təyin olunmasından sonra dəyişdirilmədiyini ifadə edir, baxmayaraq ki, açıq şəkildə final açar sözü ilə elan edilməyib. Bu, məsələn, belə dəyişənlərin lambda ifadələrində və ya anonim sinflərdə istifadəsi üçün vacibdir.

Əgər dəyişən effectively final kimi elan olunubsa, onun dəyərini dəyişmək mümkün deyil — ona yeni dəyər təyin etməyə cəhd tərtib xətasına səbəb olacaq.

Lakin, əgər bu dəyişən obyektə istinad edirsə, obyektin vəziyyəti dəyişdirilə bilər, çünki dəyişən referensiya deyil, obyektin daxili sahələri ilə əlaqədardır. Məsələn:

final List<String> list = new ArrayList<>();
list.add("yeni element");  // Bu, mümkündür

// list = new ArrayList<>();  // Xəta, referensiyanı dəyişmək olmaz

Beləliklə, dəyişənin dəyəri (referensiya) dəyişdirilə bilməz, lakin ona istinad edən obyektin məzmunu dəyişdirilə bilər.