Java generički podaci (s primjerima)

U ovom uputstvu naučit ćemo o Java Generics-u, kako stvoriti generičku klasu i metode i njenim prednostima uz pomoć primjera.

Java Generics omogućuje nam stvaranje jedne klase, sučelja i metode koja se mogu koristiti s različitim vrstama podataka (objektima).

To nam pomaže da ponovno upotrijebimo kod.

Napomena : Generički lijekovi ne rade s primitivnim tipovima ( int, float, char, itd).

Razred Java generike

Možemo stvoriti klasu koja se može koristiti s bilo kojom vrstom podataka. Takva je klasa poznata kao generička klasa.

Evo kako možemo stvoriti generičku klasu na Javi:

Primjer: Stvorite generički razred

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

Izlaz

 Povrat generičke klase: 5 Generička klasa vraća: Programiranje Java

U gornjem primjeru stvorili smo generičku klasu nazvanu GenericsClass. Ova se klasa može koristiti za rad s bilo kojom vrstom podataka.

 class GenericsClass (… )

Ovdje T koji se koristi unutar kutne zagrade označava parametar tipa . Unutar Mainrazreda stvorili smo dva objekta GenericsClass

  • intObj - Ovdje je parametar tipa T zamijenjen sa Integer. Sada, GenericsClass radi s cjelobrojnim podacima.
  • stringObj - Ovdje je parametar tipa T zamijenjen sa String. Sada GenericsClass radi s nizovnim podacima.

Java generička metoda

Slično generičkoj klasi, također možemo stvoriti metodu koja se može koristiti s bilo kojom vrstom podataka. Takav je razred poznat pod nazivom Generička metoda.

Evo kako možemo stvoriti generičku klasu na Javi:

Primjer: Stvorite generičku metodu

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

Izlaz

 Generička metoda: Podaci predani: Java programiranje Generička metoda: Podaci preneseni: 25

U gornjem primjeru stvorili smo generičku metodu nazvanu generička metoda.

 public void genericMethod(T data) (… )

Ovdje je parametar type umetnut nakon modifikatora publici prije tipa return void.

Generičku metodu možemo nazvati stavljanjem stvarnog tipa i unutar zagrade ispred naziva metode.

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

Napomena : Možemo nazvati generičku metodu bez uključivanja parametra tipa. Na primjer,

 demo.genericsMethod("Java Programming");

U ovom slučaju, prevodilac može podudarati parametar tipa na temelju vrijednosti proslijeđene metodi.

Ograničeni tipovi

Općenito, parametar tipa može prihvatiti bilo koji tip podataka (osim primitivnih tipova).

Međutim, ako želimo koristiti generičke lijekove samo za neke određene vrste (poput prihvaćanja podataka brojnih vrsta), tada možemo koristiti ograničene tipove.

U slučaju vezanih vrsta koristimo extendsključnu riječ. Na primjer,

 

To znači da T može prihvatiti samo podatke koji su podtipovi A.

Primjer: Ograničeni tipovi

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

U gornjem primjeru stvorili smo razred pod nazivom GenericsClass. Primijetite izraz, primijetite izraz

  

Ovdje je GenericsClass stvoren s ograničenim tipom. To znači GenericsClass može raditi samo s tipovima podataka koje su djeca Number( Integer, Doublei tako dalje).

Međutim, stvorili smo objekt generičke klase s String. U tom ćemo slučaju dobiti sljedeću pogrešku.

GenericsClass obj = novi GenericsClass (); razlog: varijabla zaključka T ima nekompatibilna ograničenja jednakosti granica: Donje granice niza: Broj gdje je T varijabla tipa: T se proteže Broj deklariran u klasi GenericsClass

Prednosti Java generičara

1. Višekratna upotreba koda

Uz pomoć generika u Javi možemo napisati kod koji će raditi s različitim vrstama podataka. Na primjer,

 public void genericsMethod(T data) (… )

Ovdje smo stvorili generičku metodu. Ista se metoda može koristiti za izvođenje operacija nad cjelobrojnim podacima, nizovima podataka i tako dalje.

2. Provjera tipa kompilacije

Parametar tipa generičkih lijekova pruža informacije o vrsti podataka koji se koriste u generičkom kodu. Na primjer,

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

Ovdje znamo da GenericsClass radi Integersamo s podacima.

Ako sada pokušamo ovoj klasi proslijediti podatke koji nisu Integer, program će generirati pogrešku u vrijeme sastavljanja.

3. Koristi se s zbirkama

Okvir zbirki koristi koncept generičkih lijekova u Javi. Na primjer,

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

U gornjem primjeru koristili smo istu klasu ArrayList za rad s različitim vrstama podataka.

Slično ArrayList, druge zbirke ( LinkedList, Queue, Maps, i tako dalje) su također općenito u Javi.

Zanimljivi članci...