Kompjutera, Programimi
Java Generics: Përshkrimi dhe metodat
Duke filluar me shfaqjen e gjuhës Java ka pësuar shumë ndryshime, të cilat pa dyshim sollën momente pozitive në funksionalitetin e saj. Një nga këto ndryshime të rëndësishme është futja e Java gjenerik ose përgjithësime. Ky funksionalitet jo vetëm të bëjë gjuha më fleksibile dhe të gjithanshëm, por edhe shumë më të sigurt për sa i përket sjelljes llojet e të dhënave.
Fakti është se para futjes së gjenerikë në kodin Java përgjithshme mund të krijohet, jo vetëm në aspektin e llojit të referencës Object. Lidhje të tilla mund të caktohet ndonjë objekt. Pas të gjitha, klasa në Java janë nënkuptuar trashëgimtarë të klasit Object. Megjithatë, kjo qasje është një burim potencial i shumë gabimeve që lidhen me llojet e sigurisë në konvertimin e dukshme të një objekti nga objekti me llojin synuar. Kur përdorni përgjithësimet gjitha hedh janë kryer në mënyrë implicite dhe automatikisht, duke eliminuar madje edhe potencialin për gabime.
Java Generics: Përshkrimi dhe shembulli
Le të konsiderojmë një shembull të thjeshtë e aplikimit të përgjithësimit në klasat e rregullta në figurën më poshtë. Dhe pastaj do të vazhdojë për një ekzaminim të detajuar të të gjitha hollësitë dhe nuancat e Java gjenerike.
Kushtoj vëmendje për mënyrën në të cilën deklarata klasë ndodh Pair. Menjëherë pas emrit të klasës, kllapa të hapura kënd, e cila tregoi shkronjën T. Kjo është një lloj filler, e cila është në proces të krijimit të një shembull të kësaj klase do të zëvendësohet nga një lloji të veçantë. Ajo duket si më poshtë: Pair
Shënim: duke filluar me versionin e tetë të Java, duke specifikuar llojin e synuar, kur duke deklaruar kllapa kënd reference në konstruktor mund të lihet bosh. Kështu shembull mund të rishkruhen si më sipër: palë
Kur një klasë deklarohet në mënyrë të tillë, atëherë në trupin e tij në vend të llojeve të veçanta të fushave, lidhjet, objekteve të kthyera nga metodat që ju mund të përdorni atë letër. Që T kur të krijuar objekti klasë është zëvendësuar nga një lloj të veçantë, fusha të parë dhe të dytë në këtë rast do të jetë i tipit Integer.
Pas logjikën e argumenteve dhe firstItem secondItem, referuar konstruktor duhur duhet të jetë e tipit Integer ose nënklasë. Nëse ju përpjekje për të transmetuar një lloj të të dhënave që është i ndryshëm nga ajo që ishte specifikuar kur të krijuar një objekt, përpiluesit nuk do të le këtë gabim. Kështu, argumentet ndërtuesi, kur një objekt do të jetë si më poshtë: palë
Përgjithësuar me disa parametrave lloje të klasës
Në klasat e përgjithësuar gjithashtu mund të deklarojë parametrat e shumta të llojit që janë vendosur në kllapa kënd me një presje. Redesigned nga një rast klasë Pair është paraqitur më poshtë.
Siç mund ta shikoni, kur ju krijoni një shembull të kësaj klase në kllapa kënd duhet të tregojë të njëjtin numër të llojeve si parametra. Nëse jeni të njohur me këtë lloj të strukturës së të dhënave si një hartë, ju mund të shihni se ajo përdor pikërisht njëjtin parim të. Atje, argumenti i parë përcakton llojin e çelësit, dhe e dyta - llojin e vlerës. Duhet të theksohet se llojet e transmetueshme, kur një objekt argumente mund të përputhen. Për shembull, në vijim ad Pair klasa e shkalles se është absolutisht e saktë: Pair
Disa tipare të përgjithësimeve
Para se të shkojnë më tej, duhet të theksohet se përpiluesit Java nuk krijon versione të ndryshme e palë klasës. Në fakt, në procesin e hartimit të një lloji të përgjithësuar të gjithë informacionin që fshihet. Në vend të kësaj, ju sjellë llojet e duhura, duke krijuar një version të veçantë të klasës Pair. Megjithatë, në program nuk është ende vetëm një version gjenerik i klasës. Ky proces quhet në Java llojin e pastrimit Generic.
Shënim një pikë të rëndësishme. Lidhje me versione të ndryshme të së njëjtës klasë java gjenerik nuk mund të tregojnë për një dhe të njëjtin objekt. Kjo është, mendoj ne kemi dy lidhje: palë
Kufizimet në klasa të përgjithshme
Është e rëndësishme të dini se përgjithësime mund të aplikohet vetëm për referencë lloje, që është për të kaluar parametrat generic klasit java argumentin duhet të jetë një lloj klasë. Këto lloje të thjeshta, të tilla si, p.sh., të dyfishtë apo të gjatë, nuk mund të transferohet. Me fjalë të tjera, vija pas shpalljes klasë Pair nuk lejohet: Pair
Një tjetër kufizim serioz është paaftësia për të krijuar një shembull të llojit parametër. Për shembull, vija vijim do të shkaktojë një gabim kompilimit: T = T e parë të re (). Kjo është e qartë, për shkak se ju nuk e dini paraprakisht se një argument kaloi një klasë të plotë ose abstrakte, apo edhe ndërfaqe. E njëjta gjë vlen edhe për krijimin e vargjeve.
llojet kufizuara
Mjaft shpesh ka situata kur është e nevojshme për të kufizuar listën e llojeve që mund të kalojë si një argument për të Java klasë gjenerike. Le të supozojmë se në Pair tonë klasës duam të përmbledhur vetëm vlerat numerike për operacionet e mëtejshme matematikore mbi ta. Për ta bërë këtë ne kemi nevojë për të përcaktuar kufirin e sipërm të tipit parametër. Kjo realizohet me anë të një reklama superklas trashëguara të gjitha argumentet kaluar në kllapa kënd. Ajo do të duket si më poshtë: Klasa Pair
Kjo është një pritje e zakonshme. kufizime të tilla janë përdorur shpesh për të siguruar parametrat tipit compatibility në një dhe të njëjtën klasë. Konsideroni shembullin në klasë Pair tonë: klasë Pair
Kufizimi "fund" është pikërisht në të njëjtën mënyrë, por në vend të fjalës shtrihet për të përcaktuar fjalën super. Kjo klasë është klasifikuar Pair
Metodat e përgjithshme Java dhe Ndërtuesve
Në Java, përgjithësimet mund të aplikohet jo vetëm për klasat, por edhe metodat. Për shembull, një metodë të përgjithshme mund të shpallet në një klasë të rregullt.
Siç shihet në figurën e mësipërme, metoda ad përgjithësuar nuk është e madhe. Mjaft para lloji kthimi i një metodë për të vënë kllapa kënd dhe të përcaktojë parametrat lloji në to.
Nëse çdo gjë është bërë në mënyrë të ngjashme për konstruktor:
Kllapat këndore në këtë rast të vënë para emrit të projektuesi, sepse ai nuk ka vlerë të kthimit. Rezultati i dy programeve do të jenë:
numër i plotë
varg
Similar articles
Trending Now