Güzel bir yazı tebrik ederim saygılar

Merhaba, Java 5 beraberinde dil, kütüphane, arayüz, performans özellikleri ile ilgli pek çok yenilik getirdi. Ben bu makale serisinde Java 5.0 ile gelen yeni dil özelliklerinden sırasıyla bahsetmeye çalışacağım. Öncelikle Java 5.0 ile gelen yeni dil özellikleri nelerdir onlara bir bakalım; Generic yapılar Autoboxing/Unboxing Gelişmiş for döngüsü Typesafe Enum Varargs Static Import Metadata İlk makalemizde Generic sınıflardan ve metotlardan bahsedeceğiz. C# 2.0 ile çalışmışsanız veya halen çalışıyorsanız size generic kelimesi size yabancı gelmeyecektir. Java daki generic yapılar, C# taki yapılardan çok farklı değildir. Generic Sınıflar Generic sınıf demek içerisinde her türlü tipi tutabilen, hangi tipi tutacağına sınıftan bir nesne yaratılırken karar verebileceğimiz. Nesne yaratılırken belirlediğimiz tip ne olursa olsun bütün tipler için aynı işlemleri yapabilmemizi sağlayan sınıftırtır. Örneğin bir sınıf tanımlıyoruz ve içerisinde bir başka bir sınıf barındırması gerekiyor. Fakat içerisinde barındıracağı sınıfın ne olacağına bu sınıfı yazarken yazarken değil bu sınıfı kullanırken karar vermek istiyoruz. O zaman sınıfımızı aşağıdaki gibi generic tanımlamamız gerekir. Kod: public class BizimGenericClass <E> { private E genericDeger; public BizimGenericClass public void genericTipiYaz public void genericDegeriYaz } Sınıfımızı yukarıdaki gibi tanımlarsak artık içerisinde hangi tipten bir nesne tutacağımıza bu sınıftan nesne yaratırken karar verebiliriz. Yukarıdaki kodda yazdığımız <E> sınıf içinde tutacak olduğumuz değişkenin tipine karşılık geliyor. Yani BizimGenericClass sınıfından nesne yaratırken <E> yerine yazdığımız tipte bir değişken tutacağımız anlamına geliyor. <E> yerine herhangi bir değişken adı yazabiliriz değişken isminin bir önemi oktur.<E> gösterimi sadece genel bir tipi temsil eder. Generic sınıflardan nesne yaratmak normalden biraz farklıdır; BizimGenericClass<String> bizimnesne = new BizimGenericClass<String> ; Burada sınıf tanımındaki <E> yerine <String> koyuyoruz bu bizimnesne adlı nesne içerisinde String tutacağımız anlamına gelir. Eğer <String> yerine herhangi bir tip yazmazsak bu sınıf içerisinde Object tipini saklayacağımız anlamına gelir. Aşağıdaki kod bu generic sınıfı nasıl kullanacağımızı açıklamaktadır. Kod: public class MainProgram { public static void main } Generic Metotlar Generic metotlar ise yukarıda kullandığımız generic sınıftaki yapıcı metot gibi yazılmaktadır. Aşağıda generic metot tanımıyla ilgili kısa bir örnek yeralmaktadır; Kod: public class YeniGenericClass<T> { public void BizimGenericMethod } Generic metot yazarken dikkat edilmesi gereken tek şey 3. satırdaki T genel tipinin metodu içeren YeniGenericClass sınıfın 1. satırında sınıf isminden sonra yazılan <T> ile aynı olmasıdır. Kullanırken yine generic sınıf gibi kullanacağız. Kod: public class MainProgram <T> { public static void main } Java 5.0 Generic Koleksiyon yapıları Şimdi kendimiz generic sınıf ve metot yazmak yerine Java 5.0 ile gelen işlerimizi kolaylaştırmak için yazılmış generic koleksiyonları nasıl kullanacağımızı görelim. Öncelikle eskiden Java da koleksiyon yapılarını kullanırken eskiden (Java 5.0 dan önce) nasıl bir problemimiz olduğunu görelim. Bir koleksiyon kullanmak için tanımını yapıp "new" anahtar kelimesiyle yani bir nesne yaratmamız gerekiyor. Daha sonra bu koleksiyon nesnesinin içerisine istediğimiz nesneleri "add " methodunu kullanarak ekleyebiliyoruz. Aşağıdaki kodda yeni bir vektör nesnesi yaratılıp içerisine istediğimiz nesneleri ekliyoruz. Kod: import java. util. Vector; //Kullanacağımız koleksiyon classını import ediyoruz public class MainProgram { public static void main } Aslında yukarıdaki kodda şu ana kadar bir problem yok. Problemimiz koleksiyon nesnelerinin içerisine koyduğumuz nesneleri geri almaya çalıştığımızda olacak. Koleksiyon nesneleri içerisine aldıkları bütün nesneleri "Object" tipinde tuttukları için geri almaya kalktığımızda bize bir "Object" nesnesi geridöndürecek. Bu durumda bizim bir tür dönüşümü işlemi yapmamız gerekiyor. Her geri alacağımız nesne için maalesef bu işlemi tekrar tekrar yapacağız. Yukaridaki kodda 12. satırda "elementAt " metodunu kullanarak koleksiyona koyduğumuz "AHMET" stringini geri almaya çalışıyoruz."elementAt " metodu bize nesne geri döndürdüğü için mecburen bir tür dönüşümü işlemi yapmak zorunda kaldık. Tür dönüşümü işlemini yapmasaydık derleme sırasında hata alacaktık. Koleksiyonumuzun tüm elemanlarının anı tipte olsaydı bile yine tür dönüşümü yapmak zorundaydık. Aslında görüldüğü gibi tür dönüşümü yaptığımız sürece hiçbir problemimiz yok. İsterseniz Java 5.0 kullandığınız halde hala bu yöntemle uygulama geliştirmeye devam edebilirsiniz, bir problem çıkmaz. Ama işlerimizi kolaylaştırmak istiyorsak Generic koleksiyon yapılarını kullanmamız gerekecek. Java 5.0 dan önce var olan kolaksiyon sınıfları Java 5.0 için generic sınıflar olarak tekrar yazılmıştır. Generic koleksiyon sınıfları sayesinde koleksiyonun içinde ne tür nesneler tutacağımızı önceden belirtip içerisine nesnelerimizi koyuyoruz. Geri alırken herhangi bir tür dönüşümü işlemi yapmamıza gerek kalmıyor. Örnek ; Kod: import java. util. Vector; public class MainProgram { public static void main } Fakat yukarıdaki örnektede görüldüğü gibi koleksiyonumuzun hangi tipi tutacağını koleksiyon nesnesini yaratırken söylüyoruz. Bu yüzden içerisine o tipten başka bir tip koyamıyoruz. Örneğin string vektörünün içerisine Integer koyamıyoruz. Kaynak - Mr.666 &

Forumda java ile ilginen çok az kişiden birisin paylaşımlarının devamını dilerim..+k Mr.

Teşekkür Ederim.. Java bence gerçekten çok önemli ama Pek Fazla ilgilenen yok herhalde..