Java 10 – Local Variable Type Inference (var)

Java 10 – Local Variable Type Inference (var)

Java 10, 20 Mart 2018’de yayımlandı. Java 9’un ardından yalnızca 6 ay sonra çıkan bu sürüm, büyük değişikliklerden çok yazılımcıların günlük işini kolaylaştıracak pratik özellikler getirdi.

Bu yazıda, Java 10 ile gelen onlarca yenilik arasından yazılımcılar için en önemli 3 özelliği inceleyeceğiz.

Java 10 ile Gelen Özellikler

var ile Yerel Değişken Tip Çıkarımı

Java 10’un en dikkat çeken özelliği var anahtar kelimesidir. Artık yerel değişkenlerin tipini derleyici otomatik çıkarsayabiliyor.

public class VarExample {
    public static void main(String[] args) {
        var mesaj = "Merhaba Java 10";   // String
        var sayi = 42;                   // int
        var liste = java.util.List.of("elma", "armut", "muz"); // List<String>

        System.out.println(mesaj);
        for (var meyve : liste) {
            System.out.println(meyve);
        }
    }
}

💡 var sadece yerel değişkenlerde kullanılabilir. Metot parametrelerinde, sınıf alanlarında veya dönüş tiplerinde kullanılamaz.

👉 Bu özellik, kodu daha temiz ve okunabilir hale getirir.

Değiştirilemeyen Koleksiyonlar (copyOf(), toUnmodifiableX)

Java 9 ile gelen List.of(), Set.of() gibi metodlara ek olarak Java 10’da copyOf() metotları geldi. Böylece mevcut koleksiyonlardan değiştirilemeyen kopyalar üretebiliriz.

import java.util.*;

public class CopyOfExample {
    public static void main(String[] args) {
        List<String> meyveler = Arrays.asList("elma", "armut", "muz");
        List<String> sabitListe = List.copyOf(meyveler);

        try {
            sabitListe.add("kiraz");
        } catch (UnsupportedOperationException e) {
            System.out.println("Liste değiştirilemez!");
        }
    }
}

Ayrıca Collectors.toUnmodifiableList(), toUnmodifiableSet() gibi metodlarla Stream API’den de değiştirilemeyen koleksiyonlar oluşturulabilir.

👉 Bu özellik, özellikle çok iş parçacıklı (multi-threaded) uygulamalarda büyük güvenlik sağlar.

Optional.orElseThrow()

Java 10’da Optional sınıfına yeni bir metot eklendi:

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        Optional<String> bos = Optional.empty();

        try {
            String deger = bos.orElseThrow(); // NoSuchElementException
        } catch (Exception e) {
            System.out.println("Değer bulunamadı: " + e);
        }
    }
}

💡 Bu metot, Optional.get() yerine daha temiz ve anlamlı bir çözüm sunar.

👉 Optional kullanan projelerde daha güvenli ve okunabilir bir yaklaşım sağlar.


Sonuç 🎯

Java 10, yazılımcılar için özellikle şu üç noktada önemliydi:

  • var ile daha kısa ve okunabilir kod
  • copyOf() ve toUnmodifiableX() ile güvenli koleksiyonlar
  • Optional.orElseThrow() ile daha temiz Optional API

Bunun dışında G1 Garbage Collector iyileştirmeleri, Class-Data Sharing gibi JVM seviyesinde geliştirmeler de mevcut; fakat bunlar daha çok performans tarafında etkili.

👉 Bir sonraki yazımızda, Java 11 ile birlikte gelen LTS sürümünün yeniliklerini inceleyeceğiz.
➡️ Java 11 – Yeni String Metodları, HTTP Client ve LTS


📝 Kaynaklar:

Codest Blog

Codest Blog yazılım hakkında her konuda bilgi sağlayan bir blog sitesidir. Bilgi paylaştıkça güzeldir felsefesi ile hareket ederek, yazılımcıların en cok karşılaştığı konuları sizlere aktarmayı hedefliyoruz. Keyifli okumalar 🙂