Java Generics (példákkal)

Ebben az oktatóanyagban megismerhetjük a Java Generics alkalmazást, hogyan készíthetünk generikus osztályt és módszereket, valamint annak előnyeit példák segítségével.

A Java Generics lehetővé teszi számunkra, hogy egyetlen osztályt, interfészt és módszert hozzunk létre, amely különböző típusú adatokkal (objektumokkal) használható.

Ez segít a kódunk újrafelhasználásában.

Megjegyzés : Generics nem működik primitív típusok ( int, float, charstb).

Java Generics osztály

Készíthetünk egy osztályt, amely bármilyen típusú adattal használható. Egy ilyen osztályt Generics Class néven ismerünk.

Így hozhatunk létre generikus osztályt a Java-ban:

Példa: Hozzon létre egy Generics osztályt

 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; ) )

Kimenet

 Generic Class visszatér: 5 Generic Class visszatér: Java programozás

A fenti példában létrehoztunk egy GenericsClass nevű általános osztályt. Ez az osztály bármilyen típusú adat kezelésére használható.

 class GenericsClass (… )

Itt a sarok zárójelben használt T jelöli a típus paramétert . Az Mainosztályon belül létrehoztunk két objektumot a GenericsClass-ból

  • intObj - Itt a T típusú paraméter helyébe a következő lép Integer. Most a GenericsClass egész adatokkal működik.
  • stringObj - Itt a T típusú paraméter helyébe a következő lép String. Most a GenericsClass string adatokkal működik.

Java Generics módszer

A generikus osztályhoz hasonlóan létrehozhatunk egy olyan módszert is, amely bármilyen típusú adattal használható. Egy ilyen osztály Generics Method néven ismert.

Így hozhatunk létre generikus osztályt a Java-ban:

Példa: Hozzon létre egy Generics-módszert

 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); ) )

Kimenet

 Generics módszer: Adatok átadása: Java programozás Generics módszer: Adatok átadása: 25

A fenti példában létrehoztunk egy genericsMethod nevű általános módszert.

 public void genericMethod(T data) (… )

Itt a type paraméter beillesztésre kerül a módosító után publicés a return típus elé void.

Hívhatjuk a generikus módszert úgy, hogy a tényleges típust és a zárójelbe helyezzük a módszer neve elé.

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

Megjegyzés : Meghívhatjuk a generikus módszert anélkül, hogy a type paramétert megadnánk. Például,

 demo.genericsMethod("Java Programming");

Ebben az esetben a fordító a metódusnak átadott érték alapján illesztheti a típusú paramétert.

Korlátozott típusok

Általában a type paraméter bármilyen adattípust elfogadhat (a primitív típusok kivételével).

Ha azonban csak bizonyos specifikus típusokhoz (például számtípusok adatainak elfogadásához) akarunk generikusokat használni, akkor korlátozott típusokat is használhatunk.

Kötött típusok esetén a extendskulcsszót használjuk . Például,

 

Ez azt jelenti, hogy T csak olyan adatokat fogadhat el, amelyek az A altípusai.

Példa: Korlátozott típusok

 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(); ) )

A fenti példában létrehoztunk egy GenericsClass nevű osztályt. Figyelje meg a kifejezést, vegye észre a kifejezést

  

Itt a GenericsClass korlátozott típussal jön létre. Ez azt jelenti, hogy a GenericsClass csak olyan adattípusokkal működhet, amelyek Number( Integer, Doublestb.) Gyermekei .

Azonban létrehoztuk a generikus osztály objektumát String. Ebben az esetben a következő hibát kapjuk.

GenericsClass obj = new GenericsClass (); ok: a T következtetési változónak nem kompatibilis határai vannak:

A Java Generics előnyei

1. Kód újrafelhasználhatóság

A Java-ban található generikumok segítségével olyan kódot írhatunk, amely különböző típusú adatokkal működik. Például,

 public void genericsMethod(T data) (… )

Itt létrehoztunk egy generikus módszert. Ugyanez a módszer használható egész adatok, karakterlánc-adatok és így tovább műveletek végrehajtására.

2. Fordítási idejű típusellenőrzés

A generikus típusok paramétere információt nyújt a generikus kódban használt adatok típusáról. Például,

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

Itt tudjuk, hogy a GenericsClass Integercsak adatokkal dolgozik .

Ha most az Integer kivételével más adatokat próbálunk átadni ennek az osztálynak, a program hibát generál a fordítás idején.

3. Gyűjteményekkel együtt használják

A gyűjtemények keretrendszere a generik fogalmát használja a Java-ban. Például,

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

A fenti példában ugyanazt az ArrayList osztályt használtuk különböző típusú adatok kezelésére.

Hasonló a ArrayListmás gyűjtemények ( LinkedList, Queue, Mapsés így tovább) is általános a Java.

érdekes cikkek...