Java Jenerikleri (Örneklerle)

Bu eğitimde Java Generics hakkında, jenerik sınıf ve yöntemlerinin nasıl oluşturulacağını ve örnekler yardımıyla avantajlarını öğreneceğiz.

Java Generics, farklı veri türleri (nesneler) ile kullanılabilen tek bir sınıf, arabirim ve yöntem oluşturmamızı sağlar.

Bu, kodumuzu yeniden kullanmamıza yardımcı olur.

Not : Jenerik basit türler (çalışmaz int, float, char, vb).

Java Jenerik Sınıfı

Her tür veri ile kullanılabilecek bir sınıf oluşturabiliriz. Böyle bir sınıf, Generics Sınıfı olarak bilinir.

Java'da bir jenerik sınıfı nasıl oluşturabileceğimiz aşağıda açıklanmıştır:

Örnek: Bir Jenerik Sınıfı Oluşturma

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

Çıktı

 Genel Sınıf geri dönüşleri: 5 Genel Sınıf geri dönüşü: Java Programlama

Yukarıdaki örnekte, GenericsClass adlı genel bir sınıf oluşturduk. Bu sınıf, her tür veriyle çalışmak için kullanılabilir.

 class GenericsClass (… )

Burada, açılı ayraç içinde kullanılan T , tip parametresini gösterir . İçinde Mainsınıfta, biz GenericsClass iki nesne oluşturduk

  • intObj - Burada, tür parametresi T ile değiştirilir Integer. Artık, GenericsClass tam sayı verileriyle çalışıyor.
  • stringObj - Burada, tür parametresi T ile değiştirilir String. Artık, GenericsClass dize verileriyle çalışıyor.

Java Generics Yöntemi

Jenerik sınıfına benzer şekilde, her tür veri ile kullanılabilecek bir yöntem de oluşturabiliriz. Böyle bir sınıf, Generics Method olarak bilinir.

Java'da bir jenerik sınıfı nasıl oluşturabileceğimiz aşağıda açıklanmıştır:

Örnek: Genel Yöntem Oluşturma

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

Çıktı

 Jenerik Metodu: Geçen Veri: Java Programlama Jenerik Metodu: Aktarılan Veri: 25

Yukarıdaki örnekte, genericsMethod adında genel bir yöntem oluşturduk.

 public void genericMethod(T data) (… )

Burada, tür parametresi değiştiriciden sonra publicve dönüş türünden önce eklenir void.

Asıl türü ve yöntem adından önce köşeli ayraç içine yerleştirerek jenerik yöntemi çağırabiliriz .

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

Not : Tür parametresini eklemeden jenerik yöntemi çağırabiliriz. Örneğin,

 demo.genericsMethod("Java Programming");

Bu durumda, derleyici, yönteme iletilen değere göre tür parametresini eşleştirebilir.

Sınırlı Türler

Genel olarak, tür parametresi herhangi bir veri türünü kabul edebilir (ilkel türler hariç).

Ancak, yalnızca bazı belirli türler için jenerik kullanmak istiyorsak (sayı türlerinin verilerini kabul etmek gibi), sınırlı türleri kullanabiliriz.

Bağlı türler durumunda, extendsanahtar kelimeyi kullanırız . Örneğin,

 

Bu, T'nin yalnızca A'nın alt türleri olan verileri kabul edebileceği anlamına gelir.

Örnek: Sınırlı Türler

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

Yukarıdaki örnekte, GenericsClass adlı bir sınıf oluşturduk. İfadeye dikkat edin, ifadeye dikkat edin

  

Burada, GenericsClass sınırlı tip ile oluşturulur. Bu, GenericsClass'ın yalnızca alt öğesi olan veri türleriyle çalışabileceği anlamına gelir Number( Integer, Doublevb.).

Ancak, ile jenerik sınıfının bir nesnesini oluşturduk String. Bu durumda aşağıdaki hatayı alacağız.

GenericsClass obj = new GenericsClass (); neden: çıkarım değişkeni T'nin uyumsuz sınırları eşitlik kısıtlamaları var: Dize alt sınırları: T'nin bir tür değişkeni olduğu sayı: T, GenericsClass sınıfında bildirilen sayıyı genişletir

Java Generics'in Avantajları

1. Kodun Yeniden Kullanılabilirliği

Java'daki jeneriklerin yardımıyla farklı veri türleri ile çalışacak kodlar yazabiliriz. Örneğin,

 public void genericsMethod(T data) (… )

Burada jenerik bir yöntem oluşturduk. Bu aynı yöntem, tamsayı verileri, dize verileri vb. Üzerinde işlemler gerçekleştirmek için kullanılabilir.

2. Derleme zamanı Tür Denetimi

Türü parametre jenerik jenerik kodu kullanılan veri türü hakkında bilgi sağlar. Örneğin,

 // using Generics GenericsClass list = new GenericsClass();

Burada, GenericsClass'ın Integeryalnızca verilerle çalıştığını biliyoruz .

Şimdi, bu sınıfa Tamsayı dışındaki verileri aktarmaya çalışırsak, program derleme zamanında bir hata üretecektir.

3. Koleksiyonlarla Kullanıldı

Koleksiyon çerçevesi, Java'daki jenerik kavramını kullanır. Örneğin,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

Yukarıdaki örnekte, farklı veri türleriyle çalışmak için aynı ArrayList sınıfını kullandık.

Benzer ArrayListdiğer koleksiyonları ( LinkedList, Queue, Mapsve benzeri) da Java geneldir.

Ilginç makaleler...