Java Generics (ar piemēriem)

Šajā apmācībā mēs uzzināsim par Java Generics, kā ar piemēru palīdzību izveidot vispārīgo klasi un metodes un tās priekšrocības.

Java Generics ļauj mums izveidot vienu klasi, saskarni un metodi, ko var izmantot ar dažāda veida datiem (objektiem).

Tas palīdz mums atkārtoti izmantot mūsu kodu.

Piezīme : Generics nedarbojas ar primitīvas veidi ( int, float, char, uc).

Java Generics klase

Mēs varam izveidot klasi, kuru var izmantot ar jebkura veida datiem. Šāda klase ir pazīstama kā Generics klase.

Lūk, kā mēs varam izveidot vispārēju klasi Java:

Piemērs: izveidojiet Generics klasi

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

Rezultāts

 Vispārējā klase atgriež: 5 Vispārīgā klase atgriež: Java programmēšana

Iepriekš minētajā piemērā mēs esam izveidojuši vispārīgu klasi ar nosaukumu GenericsClass. Šo klasi var izmantot darbam ar jebkura veida datiem.

 class GenericsClass (… )

Šeit leņķa kronšteina iekšpusē izmantotais T norāda tipa parametru . MainKlases iekšpusē mēs esam izveidojuši divus GenericsClass objektus

  • intObj - Šeit tipa parametrs T tiek aizstāts ar Integer. Tagad GenericsClass darbojas ar veseliem skaitļiem.
  • stringObj - Šeit tipa parametrs T tiek aizstāts ar String. Tagad GenericsClass darbojas ar virkņu datiem.

Java Generics metode

Līdzīgi kā vispārīgo klasē, mēs varam izveidot arī metodi, kuru var izmantot jebkura veida datiem. Šāda klase ir pazīstama kā Generics Method.

Lūk, kā mēs varam izveidot vispārēju klasi Java:

Piemērs: izveidojiet Generics metodi

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

Rezultāts

 Generics metode: nodotie dati: Java programmēšana Generics metode: nodotie dati: 25

Iepriekš minētajā piemērā mēs esam izveidojuši vispārīgu metodi ar nosaukumu genericsMethod.

 public void genericMethod(T data) (… )

Šeit parametra tips tiek ievietots aiz modifikatora publicun pirms atgriešanās veida void.

Mēs varam izsaukt vispārīgo metodi, ievietojot faktisko tipu un iekavas iekšpusē pirms metodes nosaukuma.

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

Piezīme . Mēs varam izsaukt vispārīgo metodi, neiekļaujot tipa parametru. Piemēram,

 demo.genericsMethod("Java Programming");

Šajā gadījumā kompilators var saskaņot tipa parametru, pamatojoties uz metodei nodoto vērtību.

Ierobežoti veidi

Parasti tipa parametrs var pieņemt visus datu tipus (izņemot primitīvos).

Tomēr, ja mēs vēlamies izmantot vispārīgus tikai dažiem specifiskiem veidiem (piemēram, pieņemt skaitļu veidu datus), mēs varam izmantot ierobežotos veidus.

Saistītu veidu gadījumā mēs izmantojam extendsatslēgvārdu. Piemēram,

 

Tas nozīmē, ka T var pieņemt tikai datus, kas ir A apakštipi.

Piemērs: ierobežoti veidi

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

Iepriekš minētajā piemērā mēs esam izveidojuši klasi ar nosaukumu GenericsClass. Ievērojiet izteicienu, pamaniet izteicienu

  

Šeit tiek izveidots GenericsClass ar norobežotu tipu. Tas nozīmē, ka GenericsClass var tikai darbs ar datu tipiem, kas ir bērni Number( Integer, Double, un tā tālāk).

Tomēr mēs esam izveidojuši generics klases objektu ar String. Šajā gadījumā mēs saņemsim šādu kļūdu.

GenericsClass obj = new GenericsClass (); iemesls: secinājuma mainīgajam T ir nesaderīgi robežu vienlīdzības ierobežojumi: virknes apakšējās robežas: skaitlis, kur T ir tipa mainīgais: T paplašina numuru, kas deklarēts klasē GenericsClass

Java Generics priekšrocības

1. Kodu atkārtota izmantošana

Ar Java vispārīgo palīdzību mēs varam uzrakstīt kodu, kas darbosies ar dažāda veida datiem. Piemēram,

 public void genericsMethod(T data) (… )

Šeit mēs esam izveidojuši vispārēju metodi. Šo pašu metodi var izmantot, lai veiktu darbības ar veseliem skaitļiem, virkņu datiem un tā tālāk.

2. Kompilēšanas laika tipa pārbaude

Veids parametrs patentbrīvo sniedz informāciju par datu izmantoto generic kods veida. Piemēram,

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

Šeit mēs zinām, ka GenericsClass strādā Integertikai ar datiem.

Tagad, ja mēs mēģinām nodot šai klasei datus, kas nav Integer, programma sastādīšanas laikā radīs kļūdu.

3. Izmanto kopā ar kolekcijām

Kolekciju ietvarā Java tiek izmantots vispārīgo jēdziens. Piemēram,

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

Iepriekš minētajā piemērā mēs izmantojām vienu un to pašu ArrayList klasi, lai strādātu ar dažāda veida datiem.

Līdzīgi kā ArrayListcitas kolekcijas ( LinkedList, Queue, Maps, un tā tālāk), ir arī vispārīgs Java.

Interesanti raksti...