Mga kompyuterProgramming

Mga Generic Java: Deskripsyon ug Mga Pamaagi

Sukad sa pagsugod niini, ang Java nga pinulongan adunay daghan nga mga pagbag-o, nga sa walay duhaduha, nagdala sa mga positibo nga bahin sa pagpaandar niini. Ang usa ka mahinungdanon nga kausaban mao ang pagpaila sa Java Generic o generalisation. Ang kini nga katuyoan nakapahimo sa pinulongan nga dili lamang mas sayon ug daghag gamit, apan daghan usab nga dili luwas sa termino sa mga datos sa datos.

Ang kamatuoran mao nga sa wala pa ang pagpaila sa mga generics, ang generic nga code sa Java mahimong gimugna, lamang sa mga link sa klase nga Object. Ang maong mga sumpay mahimong itudlo sa bisan unsang butang. Human sa tanan, ang tanan nga mga klase sa Java mga implicit nga mga kaliwat sa klase sa Object. Apan, kini nga pamaagi usa ka potensyal nga tinubdan sa daghang mga tipikal nga kasaypanan sa kahilwasan kung tin-aw mo nga nakumbertir ang usa ka butang gikan sa Object ngadto sa target type. Sa diha nga gigamit ang mga pagkaporma, ang tanan nga mga cast gipahigayon sa bug-os ug awtomatiko, nga wala maglakip bisan sa posibleng posibilidad sa mga kasaypanan.

Mga Generic Java: paghulagway ug panig-ingnan

Atong usisahon ang usa ka yano nga pananglitan sa pag-aplikar sa kalahian sa naandan nga klase sa numero sa ubos. Ug dayon unya kita magpadayon sa usa ka detalyadong pagsusi sa tanan nga mga subtleties ug nuances sa Java Generic.

Matikdi kung giunsa ang gipahayag nga klase sa Pair. Pagkahuman sa ngalan sa klase, ang mga bracket sa anggulo gibuksan, diin gipaila ang letrang T. Kini usa ka matang sa placeholder nga mapulihan sa usa ka piho nga matang sa paghimo sa usa ka pananglitan niini nga klase. Kini ingon niini: Pair obj = new Pair (). Kinahanglan nga matikdan nga inay sa T, mahimo nimong hisgutan ang bisan unsang sulat, apan, isip usa ka lagda, gamiton ang T, V o E.

Mubo nga sulat: Sugod sa ika-walo ka bersyon sa Java, nga nagpunting sa target type sa dihang ang link gipahayag, mahimo nimong ibilin ang mga angle brackets sa walay sulod nga tagtukod. Busa ang panig-ingnan sa ibabaw mahimong isulat pag-usab ingon sa mosunod: Pair obj = new Pair <> ().

Kung ang usa ka klase gipahayag niining paagiha, nan sa niini nga lawas, inay sa mga piho nga matang sa mga natad, mga pakisayran, ug mga pamaagi nga gibalik pinaagi sa mga pamaagi, mahimo nimo gamiton kini nga sulat. Tungod kay ang T gipulihan sa usa ka piho nga matang sa paghimo sa usa ka klase nga butang, ang una ug ikaduha nga mga natad sa niini nga kaso mahimong tipo nga Integer.

Human sa logic, ang mga argumento firstItem ug secondItem, gipasa ngadto sa katugbang nga konstruktor, kinahanglan usab nga tipo sa Integer o sa iyang subclass. Kung mosulay ka sa pagpasa sa usa ka data type nga lahi gikan sa kung unsa ang gitakda sa dihang ang butang gimugna, ang compiler dili molaktaw niini nga sayop. Busa, ang constructor nga may argumento sa paghimo sa butang adunay mosunod nga porma: Pair obj = new Pair <> (bag-ong Integer (1), bag-ong Integer (2)). Ang sama nga magamit sa mga argumento sa setFirst ug setSecond nga pamaagi. Ug sumala sa imong nahunahunaan na, ang getFirst ug getSecond nga mga pamaagi magbalik sa mga bili sa integer type.

Usa ka generic nga klase nga adunay ubay-ubay nga mga parameter

Sa mga generic nga mga klase, mahimo usab nga ipahayag ang ubay-ubay nga mga parameter nga gikutlo nga anaa sa mga angle angle, gibulag sa mga koma. Ang Pair nga klase alang niini nga kaso gipresentar sa numero sa ubos.

Ingon sa imong makita, sa diha nga ang pagmugna sa usa ka pananglitan sa usa ka klase, ang susama nga gidaghanon sa mga matang ingon nga ang mga lagda kinahanglan nga ihulagway sa mga brackets sa anggulo. Kung pamilyar ka sa ingon nga matang sa datos nga datos sama sa Mapa, mahimo nimong mahibal-an nga ang sama nga prinsipyo gigamit didto. Didto, ang unang argumento nagtino sa matang sa yawe, ug ang ikaduha nagtino sa matang sa bili. Kini kinahanglan nga nakita nga ang mga tipo sa mga argumento nga gipasa ngadto sa pagmugna sa butang mahimong managsama. Busa, ang mosunod nga deklarasyon sa usa ka pananglitan sa klase sa Pair hingpit nga sakto: Pair obj.

Pipila ka mga bahin sa mga kalahian

Sa wala pa magpadayon, kinahanglan nga matikdan nga ang Java compiler wala maghimo sa bisan unsang lainlaing mga bersyon sa Pair nga klase. Sa pagkatinuod, sa panahon sa proseso sa pag-compile, ang tanan nga impormasyon mahitungod sa generic nga matang gibalewala. Hinunoa, ang mga katugbang nga mga klase gisulat, nga naghimo sa usa ka espesyal nga bersyon sa Pair nga klase. Bisan pa, ang programa mismo aduna pa'y usa ka heneral nga bersyon niini nga klase. Kini nga proseso gitawag sa Java Generic type paglimpyo.

Atong timan-an ang importante nga punto. Ang mga pag-link sa lainlaing bersyon sa pareho nga klase sa java dili matudlo sa pareho nga butang. Nga mao, makaingon kita nga adunay duha ka mga link: Pair obj1 ug Pair obj2. Busa, adunay usa ka kasaypanan sa linya obj1 = obj2. Bisan tuod ang duha ka mga baryable sa mga klase nga Pair , ang mga butang nga ilang gipasabut lahi. Kini usa ka tin-aw nga ehemplo sa seguridad sa mga matang sa Java Generic.

Mga pagbabag nga gipatuman sa mga heneral nga mga klase

Mahinungdanon nga mahibal-an nga ang mga heneralisasyon mahimo lamang ipatuman sa mga klase sa reperensya, nga mao, ang argumento nga gipasa ngadto sa generic class java argument kinahanglan kinahanglan nga klase sa klase. Ang ingon nga yanong mga tipo sama pananglit, doble o taas, dili mapasa. Sa laing pagkasulti, ang mosunod nga linya sa Pair class deklarasyon dili balido: Pair obj. Apan, kini nga limitasyon dili usa ka seryoso nga problema, tungod kay ang Java adunay katugbang nga wrapper nga klase alang sa matag matang sa primitive. Sa estrikto nga pagsulti, kung gusto mo nga ipa-encapsulate ang usa ka integer ug usa ka lohikal nga bili sa Pair class, ang auto-pack maghimo sa tanan alang kanimo: Pair obj = new Pair <> (25, tinuod).

Ang laing seryoso nga limitasyon mao ang imposible sa pagmugna og usa ka pananglitan sa usa ka tipik nga tipo. Busa, ang mosunod nga linya magpahinabo sa kasaypanan sa kompilasyon: T una = bag-ong T (). Maathag ini, bangod wala mo mahibal-an sing abanse kon ang isa ka bug-os nga klase ukon isa ka abstract interface ipasa bilang argumento. Ang sama nga gihimo alang sa paghimo arrays.

Limitado nga matang

Kasagaran adunay mga sitwasyon kung kinahanglanon nga limitahan ang lista sa mga klase nga mahimong ipasa isip argumento sa generic nga klase sa java. Atong hunahunaon nga sa atong Pair nga klase gusto natong ipa-encapsulate lamang ang numerical values alang sa dugang nga mga operasyon sa matematika sa kanila. Aron mahimo kini, kinahanglan natong ibutang ang taas nga utlanan sa tipo nga parameter. Kini gipatuman gamit ang superclass nga deklarasyon nga napanunod sa tanang mga argumento nga gipasa sa anggulo nga mga braket. Kini susama niini: Ang klase nga Pair . Niining paagiha, nahibal-an sa compiler nga inay sa T nga parameter, mahimo nimo ibutang ang Numero nga klase o usa sa mga subclass niini.

Kini usa ka komon nga pamaagi. Ang ingon nga mga pagdili sagad gigamit aron maseguro ang pagkasibo sa mga pag-type nga mga parameter sa pareho nga klase. Hunahunaa ang usa ka pananglitan sa among Pair class: class Pair . Dinhi among gisultihan ang compiler nga ang type T mahimong arbitrary, ug i-type ang V kinahanglan nga ma-type ang T o usa sa mga subclasses niini.

Ang pagpugong "gikan sa ubos" mahitabo sa susama nga paagi, apan inay ang pulong nagaabot, ang pulong super gisulat. Nga mao, ang deklarasyon sa klase nga Pair nagpakita nga sa baylo sa T, bisan usa ka ArrayList o bisan unsa nga klase o interface nga iyang napanunod mahimong ilisan.

Generic Java Methods ug Constructors

Sa Java ang mga heneralisasyon mahimong magamit dili lamang sa pagtahud sa mga klase, apan usab mga pamaagi. Busa, ang kasagaran nga pamaagi mahimong madeklarar sa naandan nga klase.

Sumala sa imong makita sa hulagway sa ibabaw, walay komplikado sa deklarasyon sa kasagaran nga pamaagi. Kini igo nga ibutang ang mga brackets sa anggulo sa dili pa ang pamaagi sa pagbalik sa klase ug isulti ang tipik nga mga parameter nga anaa kanila.

Sa kaso sa usa ka constructor, ang tanan nahimo sa samang paagi:

Ang mga braket sa anggulo sa niini nga kaso gibutang sa atubangan sa ngalan sa tigtukod, tungod kay wala kini bisan unsang bili. Ang resulta sa trabaho sa duha nga mga programa mao ang:

Integer

String

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ceb.delachieve.com. Theme powered by WordPress.