Kas yra „Java“ „Generics“? - vadovas pradedantiesiems



Šis straipsnis apie „Generics“ Java pateikia trumpą įžvalgą apie tai, kas yra „Java“ generiniai vaistai ir įvairūs jų tipai, kartu su pavyzdžiais.

Apsvarstykite pavyzdį, kur turite sudaryti vietinių gyvių sąrašą. Nesvarbu, ar tai žmogus, ar gyvūnas, ar augalas. Svarbu tik gyvas daiktas. Tokiu atveju juos visus sugrupuotumėte kaip „Gyvus daiktus“, o ne skirstytumėte į kategorijas. Panašiai, kai turite saugoti tam tikrus duomenis, jums svarbu turinys, o ne duomenų tipas, ir čia jūs naudojate „Generics“. Bendrieji vaistai yra kalbos ypatybė, leidžianti naudoti bendrinius tipus ir metodus.

Toliau pateikiamas temų, kurias aptarsiu šiame straipsnyje, sąrašas:





Kas yra „Java“ „Generics“?

Generikai yra terminas, žymintis kalbos ypatybių rinkinį, susijusį su bendrinių tipų ir metodų apibrėžimu ir naudojimu. „Java Generic“ metodai skiriasi nuo įprastų duomenų tipų ir metodų. Prieš „Generics“ mes naudojome saugoti bet kokio tipo daiktus, t.y. ne bendrinis . Dabar „Generics“ priverčia programuotojas saugo konkretaus tipo objektus.

Dabar, kai žinote, kas yra „Java“ generika, eikime toliau ir supraskime, kodėl jums reikia „Java Generics“.



Kodėl „Java Generics“?

Jei pažvelgsite į klases, tada pastebėsite, kad dauguma klasių naudoja objekto tipo parametrą / argumentą. Iš esmės šioje formoje jie gali pasirinkti bet kurį „Java“ tipą kaip argumentą ir grąžinti tą patį objektą ar argumentą. Jie iš esmės yra nevienalytis t., ne panašaus tipo.

„FrameworkHierarchy“ - „Java“ generiniai - „Edureka“

Kartais „Java“ programoje įvesties duomenų tipas nėra fiksuotas. Įvestis gali būti sveikasis skaičius , į plūdė arba . Norėdami priskirti įvestį tinkamo duomenų tipo, reikėjo atlikti išankstinius patikrinimus. Taikant tradicinį metodą, paėmus įvestį, patikrintas įvesties duomenų tipas ir paskui priskirtas tinkamo tipo duomenų kintamajam. Kai buvo naudojama ši logika, buvo padidintas kodo ilgis ir vykdymo laikas. Norėdami to išvengti, Buvo pristatyti bendrieji vaistai . Kai naudojate „Generics“, kodo parametrai automatiškai tikrinami kompiliavimo metu ir pagal numatytuosius nustatymus nustatomas duomenų tipas. Taigi čia jums reikia „Java“ generinių idėjų.



Dabar, kai įgijote įžvalgų apie „Generics“, eikime į priekį ir pažvelkime į įvairius būdusBendrieji šaltiniai gali būti taikomi.

„Java Generics“ tipai

Yra 4 skirtingi būdai, kaip „Generics“ galima pritaikyti „Java“, ir jie yra šie:

  1. Bendrojo tipo klasė
  2. Bendroji sąsaja
  3. Bendrasis metodas
  4. Bendras konstruktorius

Dabar supraskime, kaip generiniai vaistai gali būti giliai pritaikomi tipų klasei.

1. Bendrojo tipo klasė

Sakoma, kad klasė yra bendroji, jei ji deklaruoja vieną ar daugiau tipo kintamųjų. Šie kintamųjų tipai yra žinomi kaip . Supraskime tai pavyzdžio pagalba. Toliau pateiktame pavyzdyje sukursiu klasę su viena nuosavybe x ir turto tipas yra objektas.

class Genericclass {private Object x public void set (Object x) {this.x = x} public Object get () {return x}}

Inicijuojant klasę tam tikru tipu, klasė turėtų būti naudojama tik su tuo konkrečiu tipu. Pvz. Jei norite, kad viena klasės egzempliorius išlaikytų vertę x tipo “ Stygos ', Tada programuotojas turėtų nustatyti ir gauti vienintelį tipo. Kadangi nuosavybės tipą deklaravau „Object“, jokiu būdu negalima įgyvendinti šio apribojimo. Programuotojas gali nustatyti bet kurį objektą ir iš jo gali tikėtis bet kokio grąžinimo vertės tipo gauti metodą nes visi „Java“ tipai yra klasė.

Norėdami įgyvendinti tokio tipo apribojimus, galime naudoti toliau nurodytus generinius vaistus:

class Genericclass {// T reiškia „Type“ private T x public void set (T x) {this.x = x} public T get () {return x}}

Dabar galite būti tikri, kad klasė nebus naudojama netinkamai naudojant netinkamus tipus. Paprastas pavyzdys' Bendroji klasė “Atrodo taip, kaip parodyta žemiau:

Genericclass instance = new Genericclass () instance.set ('Edureka') instance.set (10) // Tai padidins kompiliavimo laiko klaidą

Taigi taip jis veikia. Taianalogija galioja ir sąsajai. Greitai pažvelkime į pavyzdį, kad suprastume, kaip generinių tipų informacija gali būti naudojama „Java“ sąsajose.

c ++ rūšiavimo algoritmas

2. Bendroji sąsaja

An nurodo abstrakčius duomenų tipus. Jie leidžia manipuliuoti nepriklausomai nuo jų atstovavimo detalių. Be to, jie formuoja hierarchiją kalbomis. Supraskime, kaip „Java“ sąsajoms gali būti taikomas bendrasis tipas.

// Bendrosios sąsajos apibrėžimo sąsaja „GenericInterface“ {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // Klasė, įgyvendinanti bendrąją sąsajos klasę „Genericclass“ įgyvendina „GenericInterface“ {public Integer PerformExecution (String x) {// vykdymo kodas} public String ReverseExecution ( Sveikas skaičius x) {// vykdymo kodas}}

Tikiuosi, kad galėjote suprasti, kaip „Generics“ galima pritaikyti tipų klasei ir sąsajoms. Dabar įsigilinkime į šį straipsnį ir supraskime, kuo jis naudingas metodams ir konstruktoriams.

3. Bendrieji metodai

Bendrieji metodai yra daug panašūs į bendrąsias klases. Jie skiriasi vienas nuo kito tik vienu aspektu apimties ar tipo informacija yra tik metodo viduje. Bendrieji metodai įveda savo tipo parametrus.

peršokti į c ++

Supraskime tai su pavyzdžiu. Žemiau pateikiamas bendro metodo, kuris gali būti naudojamas norint rasti visus tipo parametrų atvejus kintamųjų sąraše, pavyzdys.

public static int countAllOccurrences (T [] list, T element) {int count = 0 if (element == null) {for (T listElement: list) if (listElement == null) count ++} else {for (T listElement: list ) if (element.equals (listElement)) skaičius ++} grąžos skaičius}

Jei išlaikysite sąrašą Jei norite ieškoti šiuo metodu, tai bus gerai. Bet jei bandysite rasti skaičių eilutės sąraše, tai sukurs kompiliavimo laiką.

Ši analogija panaši ir į konstruktorių. Paimkime pavyzdį bendram konstruktoriui ir supraskime, kaip jis veikia.

4. Bendras konstruktorius

Statybininkui yra kodo blokas, kuris inicijuoja naujai sukurtą objektą. A statybininkas primena J egzemplioriaus metodą ava bet tai nėra metodas, nes neturi grąžinimo tipo. Konstruktorius turi tą patį pavadinimą kaip klasė ir atrodo taip J ava kodas. Dabar paimkime pavyzdį ir supraskime, kaip tai veikia.

klasė Matmuo {privatus T ilgis privatus T plotis privatus T aukštis // Bendras konstruktoriaus viešasis matmuo (T ilgis, T plotis, T aukštis) {super () this.length = length this.width = width this.height = height}}

Ankstesniame pavyzdyje „Dimension“ klasės konstruktorius turi informaciją apie tipą. Taigi galite turėti matmenų egzempliorių su visais vieno tipo atributais. Taigi taip galite naudoti generinių tipų konstruktorius. Tikiuosi, kad supratote „Java“ generinių vaistų tipus.

Dabar eikime toliau ir pažvelkime į „Generics“ Java privalumus.

„Java“ generikos privalumai

1. Kodo pakartotinis naudojimas

Galite sudaryti strategiją, klasę ar an vieną kartą ir naudokite bet kokiam jums reikalingam tipui.

2. Individualių tipų liejimas nereikalingas

Iš esmės jūs atkūrėte informaciją iš kiekvieną kartą reikia jį surašyti. Kiekvienos atkūrimo užduoties rūšiavimas yra pagrindinė migrena. Norėdami išnaikinti šį požiūrį, buvo įvesti generiniai vaistai.

3. Ne generinio algoritmo įgyvendinimas

Jis gali apskaičiuoti algoritmus, kurie veikia su įvairiais elementais, kurie taip pat yra saugūs.

Viskas buvo apie „Java Generics“ pranašumus. Tuo mes baigiame šį straipsnį apie „Generics“ sistemoje „Java“. Tikiuosi, kad jums tai buvo naudinga ir padėjo suprasti „Java Generics“.

Patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. Mes esame čia, kad padėtume jums kiekviename jūsų kelionės žingsnyje, kad taptume be šių „Java“ interviu klausimų, mes parengėme programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žaisti „Java“ programavimą ir išmokyti pagrindinių bei pažangių „Java“ koncepcijų kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau paminėti tai komentarų skyriuje „Generics in Java ' straipsnis ir mes kuo greičiau susisieksime su jumis.