Java Generics (koos näidetega)

Selles õpetuses õpime näidete abil Java Genericsist, kuidas luua geneeriliste ainete klassi ja meetodeid ning selle eeliseid.

Java Generics võimaldab meil luua ühe klassi, liidese ja meetodi, mida saab kasutada erinevat tüüpi andmetega (objektidega).

See aitab meil oma koodi taaskasutada.

Märkus : Generics ei tööta primitiivne tüüpi ( int, float, charjne).

Java Generics klass

Saame luua klassi, mida saab kasutada mis tahes tüüpi andmetega. Sellist klassi nimetatakse Generics Classiks.

Siit saate teada, kuidas Java-s üldklassi luua:

Näide: looge klass 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; ) )

Väljund

 Üldine klass tagastab: 5 Üldine klass tagastab: Java programmeerimine

Ülaltoodud näites oleme loonud üldise klassi nimega GenericsClass. Seda klassi saab kasutada mis tahes tüüpi andmetega töötamiseks.

 class GenericsClass (… )

Siin näitab nurksulgudes kasutatud T tüübi parameetrit . MainKlassi sees oleme loonud kaks GenericsClassi objekti

  • intObj - Siin asendatakse tüübiparameeter T väärtusega Integer. Nüüd töötab GenericsClass täisarvu andmetega.
  • stringObj - Siin asendatakse tüübiparameeter T väärtusega String. Nüüd töötab GenericsClass stringiandmetega.

Java Generics meetod

Sarnaselt geneeriliste ainete klassile saame luua ka meetodi, mida saab kasutada mis tahes tüüpi andmetega. Sellist klassi nimetatakse Generics Methodiks.

Siit saate teada, kuidas Java-s üldklassi luua:

Näide: looge üldine meetod

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

Väljund

 Genericsi meetod: edastatud andmed: Java programmeerimine Generics meetod: edastatud andmed: 25

Ülaltoodud näites oleme loonud üldmeetodi nimega genericsMethod.

 public void genericMethod(T data) (… )

Siin sisestatakse tüübiparameeter modifikaatori järele publicja enne tagastustüüpi void.

Me võime kutsuda üldist meetodit, paigutades meetodi nime ette tegeliku tüübi ja sulgudesse.

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

Märkus . Me võime kutsuda üldist meetodit ilma tüübi parameetrit lisamata. Näiteks,

 demo.genericsMethod("Java Programming");

Sel juhul saab kompilaator sobitada tüübi parameetri meetodile edastatud väärtuse põhjal.

Piiratud tüübid

Üldiselt võib tüübi parameeter aktsepteerida mis tahes andmetüüpe (välja arvatud primitiivsed tüübid).

Kui aga soovime kasutada geneerilisi ravimeid ainult mõne konkreetse tüübi jaoks (näiteks aktsepteerida numbritüüpide andmeid), siis saame kasutada piiratud tüüpe.

Seotud tüüpide puhul kasutame extendsmärksõna. Näiteks,

 

See tähendab, et T saab aktsepteerida ainult neid andmeid, mis on A alamtüübid.

Näide: piiratud tüübid

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

Ülaltoodud näites oleme loonud klassi nimega GenericsClass. Märka väljendit, märka väljendit

  

Siin luuakse GenericsClass piiratud tüüpi. See tähendab GenericsClass võib ainult töö andmetüüpe, mis on lastele Number( Integer, Double, ja nii edasi).

Oleme aga loonud geneeriliste ainete klassi objekti String. Sel juhul saame järgmise tõrke.

GenericsClass obj = uus GenericsClass (); Põhjus: järeldusmuutujal T on kokkusobimatud piirid võrdsuse piirangud: Stringi madalamad piirid: arv, kus T on tüübimuutuja: T laiendab klassi GenericsClass deklareeritud arv

Java Generics eelised

1. Koodi korduvkasutus

Java-s sisalduvate geneeriliste ravimite abil saame kirjutada koodi, mis töötab erinevat tüüpi andmetega. Näiteks,

 public void genericsMethod(T data) (… )

Siin oleme loonud üldise meetodi. Sama meetodit saab kasutada täisarvu, stringiandmete ja nii edasi toimingute tegemiseks.

2. Koosteaja tüübi kontroll

Parameeter geneeriliste annab teavet tüüpi andmeid kasutatakse geneeriliste koodi. Näiteks,

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

Siin teame, et GenericsClass töötab ainult Integerandmetega.

Kui proovime nüüd sellesse klassi edastada muid andmeid kui täisarv, genereerib programm kompileerimise ajal vea.

3. Kasutatakse koos kollektsioonidega

Kogude raamistik kasutab Java-s üldiste mõistet. Näiteks,

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

Ülaltoodud näites oleme erinevat tüüpi andmetega töötamiseks kasutanud sama klassi ArrayList.

Sarnaselt ArrayListteistele kogud ( LinkedList, Queue, Mapsja nii edasi) on ka üldised Java.

Huvitavad Artiklid...