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
, char
jne).
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 .
Main
Klassi 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
public
ja 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 extends
mä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 Integer
andmetega.
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 ArrayList
teistele kogud ( LinkedList
, Queue
, Maps
ja nii edasi) on ka üldised Java.