KompjutersIpprogrammar

Java Generics: deskrizzjoni u metodi

Nibdew bl-dehra tal-lingwa Java għaddiet minn ħafna tibdiliet, li bla dubju miġjuba mumenti pożittivi fil-funzjonalità tagħha. Waħda minn dawn il-bidliet sinifikanti hija l-introduzzjoni ta 'Java ġeneriċi jew ġeneralizzazzjonijiet. Din il-funzjonalità mhux biss tagħmel il-lingwaġġ aktar flessibbli u versatili, iżda wkoll ferm aktar sigur f'termini li jġibu l-tipi ta 'data.

Il-fatt hu li qabel l-introduzzjoni ta 'ġeneriċI kodiċi ġeneriċi Java jistgħu jinħolqu, mhux biss f'termini ta' Għan referenza tip. Tali rabtiet jistgħu jiġu assenjati kwalunkwe oġġett. Wara kollox, il-klassijiet fl Java huma werrieta klassi Għan impliċiti. Madankollu, dan l-approċċ huwa sors potenzjali ta 'ħafna żbalji relatati ma' tipi sigurtà fil-konverżjoni apparenti ta 'oġġett mill-Għan għat-tip mira. Meta jintużaw ġeneralizzazzjonijiet casts kollha huma mwettqa impliċitament u awtomatikament, jeliminaw anki l-potenzjal għal żbalji.

Java Generics: deskrizzjoni u l-eżempju

Ejja nieħdu eżempju sempliċi ta 'l-applikazzjoni ta' ġeneralizzazzjoni għall-klassijiet regolari fil-figura hawn taħt. U mbagħad jipproċedi għal eżami dettaljat ta 'kull l-irqaqat u sfumaturi ta' Java ġeneriċi.

Oqgħod attent għall-mod li bih id-dikjarazzjoni klassi iseħħ Par. Immedjatament wara l-isem klassi, parentesi angolu miftuħ, li indikat l-ittra T. Dan huwa tip ta 'mili, li tinsab fil-proċess tal-ħolqien każ ta' din il-klassi se jiġu sostitwiti minn tip speċifiku. Huwa jistenna kif ġej: Par obj = Par ġdida (). Għandu jiġi nnutat li minflok ta 'T tista' tispeċifika kwalunkwe ittra, iżda, bħala regola, l-użu T, V jew E.

Nota: tibda bl-tmien verżjoni tal-Java, li tispeċifika t-tip fil-mira meta tiddikjara parentesi angolu referenza fl-kostruttur jista 'jitħalla vojt. Allura eżempju jistgħu jiġu miktuba mill-ġdid kif hawn fuq: Par obj = Par ġdida <> ().

Meta klassi hija dikjarata b'tali mod, imbagħad fil-ġisem tiegħu minflok ta 'tipi speċifiċi ta' oqsma, links, oġġetti mibgħuta lura mill-metodi tista 'tuża din l-ittra. Peress T meta jinħoloq l-oġġett klassi hija sostitwita minn tip partikolari, l-ewwel u t-tieni oqsma f'dan il-każ se jkun ta 'l-Integer tip.

Wara l-loġika tal-argumenti u firstItem secondItem, irrefera għall-kostruttur xierqa għandha tkun ukoll ta 'Integer tip jew subklassi. Jekk int tipprova li jittrasmetti tip ta 'data li huwa differenti minn dak li kien speċifikat meta jinħoloq oġġett, il-kumpilatur mhux se let dan l-iżball. Għalhekk, il argumenti kostruttur meta oġġett se tkun kif ġej: Par obj = Par ġdida <> (Integer ġdid (1), Integer ġdid (2)). L-istess japplika għall-argumenti u l-metodi setFirst setSecond. U kif inti probabilment ħadthom guessed, metodi getFirst getSecond u se terġa 'lura għal valur ta' Integer tip.

Ġeneralizzat ma 'tipi ta' klassi diversi parametri

Fil-klassijiet ġeneralizzati tista 'wkoll tiddikjara parametri multipli tat-tip li huma stabbiliti fil-parentesi angolu b'virgola. Ġġeddu minn każ klassi Par hija ppreżentata hawn taħt.

Kif tistgħu taraw, meta inti toħloq każ ta 'din il-klassi fil-parentesi angolu għandhom jindikaw l-istess numru ta' tipi bħala parametri. Jekk inti familjari ma 'dan it-tip ta' struttura tad-dejta bħala Mappa, tista 'tara li dan juża eżattament l-istess prinċipju. Hemmhekk, l-ewwel argument tispeċifika t-tip ta 'ċavetta, u t-tieni - it-tip ta' valur. Għandu jiġi nnutat li t-tipi ta trasmessi meta oġġett argumenti jistgħu jikkoinċidu. Per eżempju, l-ad wara Par klassi eżempju huwa assolutament korretta: Par obj.

Xi karatteristiċi ta 'ġeneralizzazzjonijiet

Qabel ma tmur aktar, għandu jiġi osservat li l-kumpilatur Java ma joħloqx verżjonijiet differenti tal-Par klassi. Fil-fatt, fil-proċess tal-kompilazzjoni ta 'tip ġeneralizzata l-informazzjoni kollha hija mħassra. Minflok, inti tressaq it-tipi xierqa, ħolqien ta 'verżjoni speċjali tal-klassi Par. Madankollu, fil-programm għad hemm biss verżjoni ġenerika tal-klassi. Dan il-proċess jissejjaħ fl Java tip tindif ġeneriċi.

Nota punt importanti. Links għal verżjonijiet differenti tal-istess klassi ġeneriku java ma jista 'jiġbed l-istess oġġett. Dan huwa, ejja ngħidu għandna żewġ rabtiet: Par obj1 u Pair obj2. Konsegwentement, skont obj1 = obj2 żball. Għalkemm iż-żewġ varjabbli huma ta 'tip Pair , l-oġġetti li għalihom jirreferu, huma differenti. Dan huwa eżempju prim tat-tipi ta 'sigurtà fl Java ġeneriċi.

Restrizzjonijiet fuq klassijiet ġeneriċi

Huwa importanti li tkun taf li ġeneralizzazzjonijiet jistgħu jiġu applikati biss lil tipi referenza, li huwa li jgħaddi parametri argument ġeneriku java klassi għandhom ikunu ta 'tip klassi. Dawn it-tipi sempliċi, bħal, pereżempju, doppji jew twil, ma tistax tiġi trasferita. Fi kliem ieħor, id-dikjarazzjoni linja li ġejja klassi Par mhuwiex permess: Par obj. Madankollu, din il-limitazzjoni mhix problema serja, kif hemm klassi korrispondenti Java ippakkjar għal kull tip primittiv. Strettament, jekk il Par klassi inti tixtieq li jirrappreżentaw numru sħiħ u l-valur Boolean avtoupakovka ma kollox għalik: Par obj = Par ġdida <> (25, veru).

Ieħor limitazzjoni serja hija l-inabbiltà li joħolqu każ tat-tip parametru. Per eżempju, il-linja li ġejja se jikkawżaw żball kompilazzjoni: T ewwel = T ġdida (). Dan huwa ovvju, għaliex inti ma taf minn qabel jekk l-argument għadda klassi sħiħa jew astratt, jew saħansitra interface. L-istess jgħodd għall-ħolqien matriċi.

tipi limitati

Spiss hemm sitwazzjonijiet meta huwa meħtieġ li l-lista tat-tipi li jistgħu jiġu mgħoddija bħala argument biex Java klassi ġenerika. Ejja nassumu li fil Par klassi tagħna irridu li jirrappreżentaw biss il-valuri numeriċi għal aktar operazzjonijiet matematiċi fuqhom. Biex tagħmel dan għandna bżonn li jiddefinixxu l-limitu ta 'fuq tat-tip parametru. Huwa realizzati permezz ta 'ads Sopraklassi wiret l-argumenti kollha li għaddew bi parentesi angolu. Hija se teżamina kif ġej: Klassi Par . B'dan il-mod, il-kumpilatur isib li minflok l-parametru T jista 'jiġi sostitwit jew klassi Numru jew wieħed mill-subklassijiet tagħha.

Din hija akkoljenza komuni. Dawn ir-restrizzjonijiet huma ħafna drabi jintużaw biex jipprovdu parametri tip kompatibilità f'wieħed u l-istess klassi. Ikkunsidra l-eżempju fil-klassi Par tagħna: klassi Par . Hawnhekk aħna tgħid l-kumpilatur li t-tip T jista 'jkun arbitrarja, u t-tip V għandhom ikunu jew T tip jew wieħed mill-subklassijiet tagħha.

Limitazzjoni tal-"qiegħ" huwa eżattament l-istess mod, iżda minflok il-kelma testendi għall jespliċitaw il super kelma. Dik il-klassi hija kklassifikata Par jgħid li minflok ta 'T jista' jiġi sostitwit jew ArrayList, jew xi klassi jew interface li tiret.

Metodi Java ġeneriċi u l-kostrutturi

Fl Java, ġeneralizzazzjonijiet jistgħu jiġu applikati mhux biss għall-klassijiet, iżda wkoll metodi. Per eżempju, metodu ġeneriku jista 'jiġi ddikjarat fil-klassi regolari.

Kif jidher fil-figura ta 'hawn fuq, il-metodu ad ġeneralizzata huwa no big deal. Biżżejjed qabel it-tip ritorn ta 'metodu li jpoġġi l-parentesi angolu u tispeċifika l-parametri tat-tip fihom.

Jekk kollox isir b'mod simili għall-kostruttur:

parentesi angolu f'dan il-każ tressaq quddiem l-isem tad-disinjatur, minħabba dan ma jkollu ebda valur tar-ritorn. Ir-riżultat taż-żewġ programmi se jkunu:

integer

string

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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