Mga computer, Programming
Java Generics: paglalarawan at mga pamamaraan
Simula sa hitsura ng Java wika ay undergone ng maraming mga pagbabago, na walang pagsala nagdala positibong sandali sa kanyang pag-andar. Isa sa mga makabuluhang mga pagbabago ay ang pagpapakilala ng Java Generic o paglalahat. Ang paggamit na ito ay hindi lamang gumawa ng wikang mas nababaluktot at maraming nalalaman, ngunit din mas ligtas sa mga tuntunin ng pagdadala ng mga uri ng data.
Ang katotohanan ay na bago ang pagpapakilala ng generics sa Java generic code ay maaaring malikha, hindi lamang sa mga tuntunin ng i-type ang reference Object. Ang ganitong mga link ay maaaring italaga sa anumang bagay. Matapos ang lahat, mga klase sa Java ay implicit Object klase ng tagapagmana. Gayunman, ang paraan na ito ay isang potensyal na mapagkukunan ng maraming mga error na may kaugnayan sa uri ng seguridad sa mistulang conversion ng isang bagay mula sa mga Bagay sa uri target. Kapag gumagamit ng paglalahat lahat ng cast ay ginanap nang kataon lamang at awtomatikong, inaalis kahit na ang mga potensyal na para sa mga error.
Java Generics: paglalarawan at mga halimbawa
Ipaalam sa amin isaalang-alang ang isang simpleng halimbawa ng application ng generalization sa mga regular na mga klase sa figure sa ibaba. At pagkatapos ay magpatuloy sa isang detalyadong pagsusuri ng lahat ng mga subtleties at nuances ng Java Generic.
Bigyang-pansin ang paraan kung saan ang klase deklarasyon nangyayari Pares. Agad-agad matapos ang pangalan ng klase, bukas na anggulo bracket, na ipinapahiwatig ang sulat T. Ito ay isang uri ng filler, na kung saan ay nasa proseso ng paglikha ng isang halimbawa ng mga uri na ito ay papalitan sa pamamagitan ng isang partikular na uri. Mukhang tulad ng sumusunod: Pair
Tandaan: simula sa ikawalo bersyon ng Java, na tumutukoy sa uri ng target kapag deklarasyon reference anggulo bracket sa tagapagbuo maaaring iwanang walang laman. Kaya halimbawa ay maaaring rewritten bilang sa itaas: Pair
Kapag ang isang klase ay ipinahayag sa paraan, at pagkatapos ay sa kanyang katawan sa halip na mga tiyak na uri ng mga patlang, mga link, mga bagay ay bumalik sa pamamagitan ng mga pamamaraan na maaari mong gamitin ang sulat na iyon. Since T kapag lumilikha ng klase object ay napalitan ng isang partikular na uri, una at ikalawang mga patlang sa kasong ito ay magiging ng uri ng integer.
Kasunod ng logic sa mga argumento at firstItem secondItem, tinutukoy ang naaangkop na constructor ay dapat ding maging ng uri ng integer o subclass. Kung susubukan mong magpadala ng isang uri ng data na ay naiiba mula sa kung ano ay tinukoy kapag lumilikha ng isang bagay, ang tagatala ay hindi hayaan ang pagkakamaling ito. Kaya, ang mga argumento constructor kapag ang isang bagay ay magiging tulad ng sumusunod: Pair
Heneralisado na may ilang mga parameter uri ng klase
Sa pangkalahatan klase ay maaari ring ipahayag ang maraming mga parameter ng uri na ay naka-set sa anggulo bracket gamit ang isang kuwit. Muling dinisenyo sa pamamagitan ng isang case Pares ng klase ay ipinakita sa ibaba.
Tulad ng iyong nakikita, kapag lumikha ka ng isang halimbawa ng mga uri na ito sa anggulo bracket ay dapat ipahiwatig ang parehong bilang ng mga uri ng mga parameter. Kung kayo ay pamilyar sa ganitong uri ng data na istraktura bilang Map, maaari mong makita na ito ay gumagamit ng eksakto ang parehong prinsipyo. Doon, ang unang argumento ay tumutukoy sa uri ng key, at ang pangalawang - ang uri ng halaga. Dapat ito ay nabanggit na ang mga uri ng transmitted kapag ang isang bagay na argument ay maaaring nagsasapawan. Halimbawa, ang sumusunod na ad Pares Halimbawa klase ay ganap na tama: Pair
Ang ilang mga tampok ng paglalahat
Bago pagpunta sa karagdagang, dapat ito ay mapapansin na ang Java compiler ay hindi lumikha ng iba't ibang mga bersyon ng klase Pares. Sa katunayan, sa proseso ng kino-compile ang isang pangkalahatan type ang lahat ng impormasyon ay tinanggal. Sa halip, dalhin sa iyo ang naaangkop na uri, ang paglikha ng isang espesyal na bersyon ng Pares klase. Gayunpaman, sa programa mayroon pa ring lamang ng isang generic na bersyon ng klase. Ang prosesong ito ay tinatawag na sa Java type Generic cleaning.
Tandaan isang mahalagang punto. Mga link sa mga iba't ibang mga bersyon ng parehong java pangkaraniwang klase ay hindi maaaring ituro sa isa at ang parehong bagay. Iyon ay, ipagpalagay na mayroon kaming dalawang mga link: Pair
Paghihigpit sa mga generic na mga klase
Ito ay mahalaga upang malaman na ang paglalahat ay maaaring inilapat lamang na banggitin ang mga uri, iyon ay upang pumasa sa mga parameter pangkaraniwang klase java argument ay dapat na isang uri ng klase. Ang mga simpleng mga uri, tulad ng, hal, double o mahaba, hindi maaaring mailipat. Sa ibang salita, ang sumusunod na linya Pares klase deklarasyon ay hindi pinapayagan: Pair
Ang isa pang malubhang limitasyon ay ang kawalan ng kakayahan upang lumikha ng isang halimbawa ng mga uri ng parameter. Halimbawa, ang sumusunod na linya ay magiging sanhi ng isang compilation error: T unang = bagong T (). Ito ay kitang-kita, dahil hindi mo alam nang maaga kung ang isang argument lumipas ang isang buong klase o abstract, o kahit na interface. Ang parehong napupunta para sa paglikha ng array.
limitadong mga uri
Medyo madalas na may mga sitwasyon kapag ito ay kinakailangan upang limitahan ang listahan ng mga uri na maaaring maipasa bilang isang argument sa Java generic class. Ipaalam sa amin ipagpalagay na sa aming klase Pares gusto naming encapsulate lamang ang mga halagang numero para sa karagdagang mathematical operations sa mga ito. Upang gawin ito kailangan namin upang tukuyin ang mataas na limitasyon ng uri ng parameter. Ito ay natanto sa pamamagitan ng isang superclass ads minana ang lahat ng mga argumento ang pumasa sa angle brackets. Magmumukha itong mga sumusunod: klase Pair
Ito ay isang pangkaraniwang reception. Ang ganitong mga paghihigpit ay madalas na ginagamit upang magbigay ng mga parameter compatibility uri sa isa at sa parehong klase. Isaalang-alang ang halimbawa sa aming klase Pares: klase Pair
Nililimitahan ang "bottom" ay eksakto sa parehong paraan, ngunit sa halip na ang salita ay umaabot sa baybayin ang salitang super. Iyon ay nauuri klase Pair
Generic pamamaraan Java at constructor
Sa Java, paglalahat maaaring ilapat hindi lamang sa klase, kundi pati na rin mga pamamaraan. Halimbawa, ang isang pangkaraniwang paraan ay maaaring ipinahayag sa isang regular na silid-aralan.
Tulad ng nakikita sa figure sa itaas, ang ad generalised pamamaraan ay hindi malaki makitungo. Sapat na bago ang return uri ng isang paraan upang ilagay ang anggulo bracket at tukuyin ang mga parameter uri sa kanila.
Kung ang lahat ng bagay ay tapos na katulad sa ang constructor:
Braket anggulo sa kasong ito ilagay bago ang pangalan ng taga-disenyo, dahil wala siyang bumalik halaga. Ang resulta ng parehong mga programa ay magiging:
integer
tali
Similar articles
Trending Now