final alanların garantisi
- Java kursu
- Uzman
- Ders 10/46
- 5 dk
final alanların başlatma garantisi öğrenirsin.
final alanların garantisi
Bir final alan yalnızca bir kez, kurucu içinde atanır ve sonrasında değişmez. Java Bellek Modeli, kurucu tamamlandığında bu alanın tüm iş parçacıklarına görünür olmasını garanti eder; buna güvenli yayınlama denir.
Örnek: final int x. Bir nesne yayınlandığında, başka bir iş parçacığı x okursa kurucuda atanan değeri görür; yarı yapılandırılmış bir nesne görme riski yoktur. Bu yüzden değişmez (immutable) nesneler final alanlarla tasarlanır; bu hem güvenli hem de çöp toplayıcı için de verimlidir.
Değişmez nesneler
Tüm alanları final olan ve yöntemleri durumu değiştirmeyen bir nesne değişmez (immutable) olur. Değişmez nesneler iş parçacığı güvenlidir; çünkü yayınlandıktan sonra durumu asla değişmez.
Örnek: class Point { final int x; final int y; }. Bir Point oluşturulduktan sonra x ve y sabit kalır; bu yüzden kilitleme gerektirmeden paylaşılabilir. Java'nın String ve LocalDate sınıfları değişmezdir; bu özellik onların önbelleklenmesini ve güvenli paylaşılmasını sağlar.
Uygulama Değişmez Point sınıfı
Bir Point sınıfı tanımla: final int x ve final int y alanları, Point(int x, int y) kurucusu alanları atar. main içinde new Point(3, 4) ile oluştur ve p.x + p.y sonucunu System.out.println ile yazdır.
Başlangıç kodu
// Point sınıfını tanımla
// final x ve y alanları ekle
// main içinde toplamı yazdırÖrnek çözüm
class Point {
final int x;
final int y;
public Point(int x, int y) { this.x = x; this.y = y; }
}
public class FinalDemo {
public static void main(String[] args) {
Point p = new Point(3, 4);
System.out.println(p.x + p.y);
}
}Beklenen çıktı
7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 final bir alan hangi görünürlüğü garanti eder?
- Değişken görünürlüğü
- Tek örnek
- Kurucudan sonraki görünürlük Doğru cevap
- Yığın yerleşimi
Açıklama: final alan, kurucu bitince görünür hale gelir.
2 final alanı tanımla
public ____ int x;
public final int x;
Açıklama: final alan yalnızca kurucuda atanır.
3 final alan kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
final alan |
Kurucudan sonra görünür |
volatile |
Görünürlük |
synchronized |
Kilitleme |
yerel değişken |
Yığında |