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
, char
stb).
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
Main
osztá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 extends
kulcsszó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
, Double
stb.) 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 Integer
csak 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 ArrayList
más gyűjtemények ( LinkedList
, Queue
, Maps
és így tovább) is általános a Java.