23 Eylül 2011 Cuma

Genel Tipler (Generic Types) ile Değişken Dönüş Tipli Metotlar

Java'da genel tipler (generics) kullanılarak dönüş tipi çağrıldığı yere göre değişebilen kullanışlı metotlar yazılabilir. Örneğin aşağıda "nesneGetir()" metoduna yapılan her iki çağrım da sorunsuz çalışabilir ve bizi fazladan nesne dönüşüm (object casting) işleminden kurtarabilir. Halbuki aynı metottan beklenen dönüş tipi, iki satırda farklı (String ve Integer) olduğu için satırlardan birinde derleme hatası oluşması beklenirdi.

String nesne1 = yigin.nesneGetir("nesne1");
Integer nesne2 = yigin.nesneGetir("nesne2");

Bu tip bir kullanımı sağlayabilmek için genel tiplerden yararlanabiliriz. Aşağıdaki NesneYigini sınıfı içindeki "nesneGetir()" metodu örnekteki kullanımı sağlayacak şekilde tasarlanmıştır. Böylece Java derleyicisi metodun çağrıldığı yerde dönüş tipini algılayarak nesne dönüşümünü otomatik olarak yapmaktadır.

public class NesneYigini {
    private Map<String, Object> yigin;
 
    @SuppressWarnings("unchecked")
    public <T> T nesneGetir(String nesneIsmi) {
        return (T) yigin.get(nesneIsmi);
    }
}

nesneGetir() metodu kullanılırken hangi nesne ismine göre hangi tipin geleceği önceden bilinmelidir. Yani yukarıdaki örnekte "nesne1" isminin  bir String ve "nesne2"'nin de bir Integer döndüreceği önceden bilinmektedir. Aksi takdirde çalışma zamanında ClassCastException hatası ile karşılaşılacaktır.

Hiç yorum yok:

Yorum Gönder