TelefoniaPrugrammazione

Java Generics: discrizzione è i metudi

Principianu cù l 'aspettu di a lingua Java hà suppurtatu assai di cambiamenti, chì di sicuru purtatu stonde pusitiva in u so funziunalità. Unu di sti cambiamenti impurtante hè a surghjenti di Java Scetti o giniralizzazzioni. Sta funziunalità ùn solu fà a lingua di più sòffice, è pulivalenti, ma dinù assai più sicura in termini di cuddà i tippi dati.

U fattu hè chì u scopu di i testi di generics in Java codice generica pussutu esse creatu, micca solu in termini di ogetti tipu di riferenza. Vergogna ligami pò esse cunsideratu ogni uggettu. Dopu tuttu, bassa in Java sò eredi classi ogetti implicit. Tuttavia, sta dimarchja hè un putenziale surghjente di tanti numarosi riguardanti tippi di sicurezza in u cunversione apparenti di n oggettu da u ogetti di lu tipu testu. Quandu cù giniralizzazzioni tutti casts sò tutu implicitly è in autumàticu, sciugliendu, ancu u putenziale di sbagghi.

Java Generics: discrizzione è esempiu

Andemu guardà una sèmplice esempiu di l 'applicazzioni di generalisation a classi di modu regulare in a figura sottu. E poi pinsà à una esaminazioni info di tutti i subtleties e sustanzi di Java Scetti.

Pacà, attente à u modu in cui lu dichjarazione classi mangianu Pair. Subitu dopu à u nomu di classi, piazza, angle, apartu, chì indettatu u lettera T. Hè un tipu di aiguiller, chì hè in u prucessu di crià un esempiu di sta volta hà da esse sustituita da un tipu spicìficu. U friscalettu E comu segue: Pair obj = novu Pair (). It S'avissi a nutari chi 'nveci di T pò calculà ogni lettera, ma, comu un cuvernu, aduprà T, V, o E.

Nota: principianu cù l 'uttavu versione di u Java, indettendu u tippu testu quandu dichjarà mènzuli angle, riferimentu a la regala pò esse manca viotu. So esempiu si pò rewritten cum'è sopra: Pair obj = novu Pair <> ().

Quandu un gruppu hè dichjaratu in un tali manera, tandu in u so corpu, invece di scrive specifichi di campi, ligami, oggetti ritornu da u metudu vi ponu aduprà chì lettera. Dapoi T quandu facenu l 'uggettu di classi hè sustituitu da un tipu particulare, a prima e seconda campi, in stu casu, hà da esse di u tippu nteru.

Dopu à l 'affare di u argumenti è firstItem secondItem, s'arrifirisci a lu regala degne ci vole dinù esse di tipu nteru o subclass. Sè vo tintatu di trasmèttala un tipu di dati chì hè sfarente di ciò chì fù renseigné quandu criannu un oggettu, u compiler ùn vi nghiùttiri di lu sbagghiu. Cusì, u argumenti regala quandu hà da esse un oggettu di a siguenti manera: Pair obj = novu Pair <> (nova nteru (1), novi nteru (2)). Lu stissu vali à l 'argumenti è i metudi setFirst setSecond. E comu voi troppu forsi capita, i metudi getFirst getSecond è vi tornatu un valori di tipu nteru.

Generalized cù tippi classi parechji login

In bassa generalized ponu dinù cuntaraghju a multiplicità di paràmetri di u tippu chì sò crià in piazza, angle, cù un vince. Rimanighjatu da un casu di classi Pair hè prisentata sottu.

Comu si pò vede, quandu vo à creà un esempiu di sta volta in piazza, angle, duvia specificà u listessu numeru di tippi cum'è cunnessione. Sè vo site pràticu cun stu tipu di struttura di dati com'è un Map, vi ponu vede chi si usa esattamente u listessu principiu. Ci, u primu argumentu specifies u tippu di chjave, è lu secunnu - u tippu di valore. It S'avissi a nutari ca li tipi di trasmessi quandu una argumintazzioni 'uggettu pò suvrapponnu. Per esempiu, i seguenti A ad Pair esempiu di classi hè propriu veru: Pair obj.

Certi funziunalità di giniralizzazzioni

Nanzu andava più, si deve esse rimarcatu chì u compiler Java ùn creà differente versione di u Pair classi. In fatti, in u prucedimentu di compiling un tipu generalized tutti l 'infurmazione hè sguassati. Invece, vi vene u sorta degne, criannu una versione in particulare di i classi Pair. Tuttavia, à u prugrammu ci hè sempre solu una versione generica di i classi. Sta dimarchja hè chjamatu in Java tipu pulizia Scetti.

Nota un puntu impurtante. Links di diverse versioni di u listessu classi generica di giava ùn pò puntu à unu è u listessu oggettu. Chì hè, ch'ellu sarà avemu dui ligami: Pair obj1 è Pair obj2. Di cunsiguenza, in ligna obj1 = obj2 un errore. Puru dui variàbbili sò di tipu Pair , l 'uggetti à ch'elli si rifiriscinu, sò differente. Quissa hè un esempiu lu primu di i tippi di sicurizza in Java Scetti.

Ristrizzione su classi generica

Hè impurtante di sapè chì giniralizzazzioni pò esse applicata solu per riferisce tippi, chì hè di passà per login generica argumentu di giava classi deve esse un tipu di classi. Sti tipi di sèmplice, cume, p.e., doppia, o longu, ùn pò esse spustatu. In autri paroli, lu dichjarazione classi Pair cchìstu ligna ùn hè dirittu: Pair obj. Tuttavia, stu limitazzioni ùn hè micca un prublemu seria, com'è ci hè un currispundente classi Java cane per ogni tippu primitivu. Paghjella di parlà, s'ellu u Pair classi vo vulete cù una nteru e value valori avtoupakovka faci tuttu per voi: Pair obj = novu Pair <> (25, è veru).

Un altru limitazzioni gravissimu hè u incapaci à creà un esempiu di u tippu paràmetru. Per esempiu, u dopu ligna vi facissi un errore divisa: T prima = novu T (). Stu hè piacè, perchè vo ùn sapete in anticipu s'ellu un argumentu passau una classi piena o astrattu, o ancu interfaccia. U listessu và per criannu Linguastat.

tippi limitata

Spessu ci sò situazzioni quandu ci vole à limità a lista di tippi chì ponu esse passatu cum'è un argumentu di Java classi generica. Andemu pigghiarivi chì in a nostra Pair classi noi vulemu cù solu i valori numericu di più priculosi matemàtiche nant'à elli. Per fà stu avemu bisognu di definisce u limitu alta di u tippu paràmetru. Si hè avvistu da i mezi di una annunci superclass ereditatu tutti l 'argumenti passau in piazza, angle. Ci hà da circà a siguenti: classi Pair . In sta manera, l 'compiler trova chì invece di u paràmetru T pò facilità, o classi numeru, o unu di i so subclasses.

Quissa hè una saletta cumune. Vergogna à limitalli sò spissu usatu à furniscia login tipu cumpatibulità à unu è lu stissu di classi. Guardà u esempiu in i nostri classi Pair: classi Pair . Quì avemu dicu l 'compiler chì u tippu T pò esse arbitrariu, e Type V deve esse sia tipu T, o unu di i so subclasses.

Limitannu lu "fondu" hè esattamente a listessa manera, ma 'nveci di a parolla si stendi a scriviri la parola Squarzafici. Chi di classi hè classatu Pair dici ca 'nveci di T pò esse facilità, o un ArrayList, o di ogni cetu, o interfaccia chì si inherits.

metudi Java generica è constructors

In Java, giniralizzazzioni pò esse applicata micca solu à i corsi, ma dinò di i metudi. Per esempiu, un mètudu generica pò esse dichjaratu in una scola rigulari.

Comu vidi a la figura di supra, lu mètudu A ad generalized c'è granni usure. San Francè nanzu u tippu ritornu di una pratica à mette u mènzuli angle, è cù i paràmetri di tippu in elli.

Sè tuttu hè fattu simile à u regala:

mènzuli Angle in stu casu, messi davanti à u nomu di u criatori, perchè ùn hà valore ritornu. U risultatu di dui prugrammi sarà:

nteru

String

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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