Java Generics (z primeri)

V tej vadnici bomo spoznali Java Generics, kako s pomočjo primerov ustvariti generični razred in metode ter njegove prednosti.

Java Generics nam omogoča, da ustvarimo en razred, vmesnik in metodo, ki se lahko uporablja z različnimi vrstami podatkov (objekti).

To nam pomaga, da ponovno uporabimo kodo.

Opomba : Generics ne deluje v primitivnih tipov ( int, float, char, itd).

Razred Java Generics

Ustvarimo lahko razred, ki se lahko uporablja s katero koli vrsto podatkov. Tak razred je znan kot generični razred.

Evo, kako lahko v Javi ustvarimo generični razred:

Primer: Ustvarite generični 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; ) )

Izhod

 Vrne se splošni razred: 5 Vrne se splošni razred: Programiranje Java

V zgornjem primeru smo ustvarili generični razred z imenom GenericsClass. Ta razred se lahko uporablja za delo s katero koli vrsto podatkov.

 class GenericsClass (… )

Tu T, uporabljen znotraj kotnega nosilca, označuje parameter tipa . V Mainrazredu smo ustvarili dva predmeta GenericsClass

  • intObj - Tu je parameter tipa T nadomeščen z Integer. Zdaj GenericsClass deluje s celoštevilčnimi podatki.
  • stringObj - Tu je parameter tipa T nadomeščen z String. Zdaj GenericsClass deluje s podatki niza.

Java generična metoda

Podobno kot pri generičnem razredu lahko tudi mi izdelamo metodo, ki se lahko uporablja s katero koli vrsto podatkov. Tak razred je znan kot generična metoda.

Evo, kako lahko v Javi ustvarimo generični razred:

Primer: Ustvarite generično metodo

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

Izhod

 Generics Method: Data Passed: Java Programming Generics Method: Data Passed: 25

V zgornjem primeru smo ustvarili generično metodo z imenom genericsMethod.

 public void genericMethod(T data) (… )

Tu je parameter parametra vstavljen za modifikatorjem publicin pred vrnjenim tipom void.

Generično metodo lahko pokličemo tako, da pred imenom metode postavimo dejanski tip in v oklepaj.

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

Opomba : Generično metodo lahko pokličemo, ne da bi vključili parameter tipa. Na primer

 demo.genericsMethod("Java Programming");

V tem primeru se lahko prevajalnik ujema s parametrom tipa na podlagi vrednosti, posredovane metodi.

Omejene vrste

Na splošno lahko parameter tipa sprejme vse tipe podatkov (razen primitivnih tipov).

Če pa želimo generike uporabljati samo za nekatere posebne vrste (na primer sprejem podatkov številskih vrst), lahko uporabimo omejene tipe.

V primeru vezanih vrst uporabimo extendsključno besedo. Na primer

 

To pomeni, da lahko T sprejme samo podatke, ki so podtipi A.

Primer: Omejene vrste

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

V zgornjem primeru smo ustvarili razred z imenom GenericsClass. Opazite izraz, opazite izraz

  

Tu je GenericsClass ustvarjen z omejenim tipom. To pomeni, GenericsClass lahko dela samo s podatkovnimi tipi, ki so otroci Number( Integer, Doublein tako naprej).

Vendar smo ustvarili predmet generičnega razreda z String. V tem primeru bomo dobili naslednjo napako.

GenericsClass obj = new GenericsClass (); razlog: sklepna spremenljivka T ima nezdružljive omejitve enakosti mej: Niz spodnje meje: Število, kjer je T spremenljivka tipa: T razširja Število, razglašeno v razredu GenericsClass

Prednosti Java Generics

1. Ponovna uporaba kode

S pomočjo generikov v Javi lahko napišemo kodo, ki bo delovala z različnimi vrstami podatkov. Na primer

 public void genericsMethod(T data) (… )

Tu smo ustvarili generično metodo. To isto metodo lahko uporabimo za izvajanje operacij s celoštevilčnimi podatki, nizovnimi podatki itd.

2. Preverjanje tipa prevajalnika

Parameter tipa generikov ponuja informacije o vrsti podatkov, ki se uporabljajo v generični kodi. Na primer

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

Tu vemo, da GenericsClass deluje Integersamo s podatki.

Če zdaj temu razredu poskušamo prenesti podatke, ki niso Integer, bo program med prevajanjem ustvaril napako.

3. Uporablja se z zbirkami

Okvir zbirk uporablja koncept generikov v Javi. Na primer

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

V zgornjem primeru smo za delo z različnimi vrstami podatkov uporabili isti razred ArrayList.

Podobno ArrayList, druge zbirke ( LinkedList, Queue, Maps, in tako naprej), so tudi generično Java.

Zanimive Članki...