Java Generics (cu exemple)

În acest tutorial, vom învăța despre Java Generics, cum să creați clase și metode generice și avantajele sale cu ajutorul exemplelor.

Java Generics ne permite să creăm o singură clasă, interfață și metodă care pot fi utilizate cu diferite tipuri de date (obiecte).

Acest lucru ne ajută să ne refolosim codul.

Notă : Generice nu funcționează cu tipuri primitive ( int, float, charetc).

Clasa Java Generics

Putem crea o clasă care poate fi utilizată cu orice tip de date. O astfel de clasă este cunoscută sub numele de Generics Class.

Iată cum putem crea o clasă generică în Java:

Exemplu: Creați o clasă Generics

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

Ieșire

 Returnează Generic Class: 5 Returnează Generic Class: Programare Java

În exemplul de mai sus, am creat o clasă generică numită GenericsClass. Această clasă poate fi utilizată pentru a lucra cu orice tip de date.

 class GenericsClass (… )

Aici, T folosit în interiorul parantezei unghiulare indică parametrul de tip . În cadrul Mainclasei, am creat două obiecte ale GenericsClass

  • intObj - Aici, parametrul de tip T este înlocuit cu Integer. Acum, GenericsClass funcționează cu date întregi.
  • stringObj - Aici, parametrul de tip T este înlocuit cu String. Acum, GenericsClass funcționează cu date șir.

Metoda Java Generics

Similar clasei generice, putem crea și o metodă care poate fi utilizată cu orice tip de date. O astfel de clasă este cunoscută sub numele de Metoda Generică.

Iată cum putem crea o clasă generică în Java:

Exemplu: Creați o metodă generică

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

Ieșire

 Metodă generică: date transmise: programare Java Metodă generice: date transmise: 25

În exemplul de mai sus, am creat o metodă generică numită genericsMethod.

 public void genericMethod(T data) (… )

Aici, parametrul de tip este inserat după modificator publicși înainte de tipul de returnare void.

Putem apela metoda generică plasând tipul real și în paranteză înaintea numelui metodei.

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

Notă : Putem apela metoda generică fără a include parametrul tip. De exemplu,

 demo.genericsMethod("Java Programming");

În acest caz, compilatorul poate potrivi parametrul de tip pe baza valorii transmise metodei.

Tipuri limitate

În general, parametrul type poate accepta orice tipuri de date (cu excepția tipurilor primitive).

Cu toate acestea, dacă dorim să folosim generice doar pentru anumite tipuri specifice (cum ar fi acceptarea datelor de tipuri de numere) numai, atunci putem folosi tipuri mărginite.

În cazul tipurilor legate, folosim extendscuvântul cheie. De exemplu,

 

Aceasta înseamnă că T poate accepta doar date care sunt subtipuri de A.

Exemplu: tipuri limitate

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

În exemplul de mai sus, am creat o clasă numită GenericsClass. Observați expresia, observați expresia

  

Aici, GenericsClass este creat cu tip mărginit. Aceasta înseamnă că GenericsClass poate lucra numai cu tipuri de date , care sunt copiii Number( Integer, Doubleși așa mai departe).

Cu toate acestea, am creat un obiect al clasei generice cu String. În acest caz, vom primi următoarea eroare.

GenericsClass obj = new GenericsClass (); motiv: variabila de inferență T are limite incompatibile constrângeri de egalitate: Limite inferioare ale șirului: Numărul în care T este o variabilă de tip: T se extinde Numărul declarat în clasa GenericsClass

Avantajele Java Generics

1. Reutilizarea codului

Cu ajutorul genericelor din Java, putem scrie cod care va funcționa cu diferite tipuri de date. De exemplu,

 public void genericsMethod(T data) (… )

Aici, am creat o metodă generică. Aceeași metodă poate fi utilizată pentru a efectua operații pe date întregi, date șiruri și așa mai departe.

2. Verificare tip timp de compilare

Parametrul tip de generice oferă informații despre tipul de date utilizate în codul generice. De exemplu,

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

Aici, știm că GenericsClass funcționează Integernumai cu date.

Acum, dacă încercăm să transmitem date altele decât Integer către această clasă, programul va genera o eroare la momentul compilării.

3. Folosit cu colecții

Cadrul colecțiilor folosește conceptul de generice în Java. De exemplu,

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

În exemplul de mai sus, am folosit aceeași clasă ArrayList pentru a lucra cu diferite tipuri de date.

Similar cu ArrayListalte colecții ( LinkedList, Queue, Mapsși așa mai departe) sunt , de asemenea , generice în Java.

Articole interesante...