TietokoneetOhjelmointi

Java Generics: kuvaus ja menetelmät

Aloittaen ulkonäkö Java on kokenut paljon muutoksia, mikä epäilemättä toi positiivisia hetkiä sen toiminnallisuutta. Yksi näistä merkittävistä muutoksista on käyttöönotto Java Geneerinen tai yleistyksiä. Tämä toiminto ei vain tehdä kieli joustavampia ja monipuolinen, mutta myös paljon turvallisempi kannalta tuo tietotyyppejä.

Tosiasia on, että ennen käyttöönottoa geneeristen Java geneeristen koodi voisi syntyä, ei ainoastaan tyypin viiteobjektia. Tällaisia yhteyksiä voidaan antaa minkä tahansa esineen. Loppujen lopuksi luokat Java ovat epäsuorat Object luokan perillisiä. Kuitenkin, tämä lähestymistapa on mahdollinen lähde paljon virheitä, jotka liittyvät turvallisuuteen tyyppejä näennäisen muuntaminen objektin Object tyypiksi. Käytettäessä yleistyksiä kaikki heitot tehdään implisiittisesti ja automaattisesti, poistaa jopa mahdollisuudet virheitä.

Java Generics: kuvaus ja esimerkki

Tarkastellaan yksinkertaista esimerkkiä soveltamisen yleistys tavallisella luokalla alla olevassa kuvassa. Ja sitten edetä yksityiskohtaisen tarkastelun kaikki vivahteet ja vivahteita Java Generic.

Kiinnitä huomiota tapaan, jolla luokan julistuksen tapahtuu pari. Välittömästi sen jälkeen, kun luokan nimi, avoin kulma suluissa, mikä osoitti T-kirjaimen Se on eräänlainen täyteainetta, joka on prosessissa, jossa luodaan esimerkiksi tämän luokan korvataan tietyntyyppisiä. Se näyttää seuraavalta: Pari obj = uusi pari (). On huomattava, että T: n sijasta voi määritellä minkä tahansa kirjaimen, mutta pääsääntöisesti käyttää T, V tai E.

Huomautus: alkaen kahdeksannen version Java, kohde-tyyppi, kun todetaan, viittaus kulmaraudat rakentaja voi jättää tyhjäksi. Jotta voidaan esimerkiksi kirjoittaa uudelleen, kuten edellä: Pari obj = uusi Pair <> ().

Kun luokka on ilmoitettu siten, sitten ruumiin sijaan tietyntyyppisten kenttiä, linkit, objektit palauttama menetelmiä, joilla voit kirjeeseen. Koska T luotaessa luokan objekti on korvattu tietyn tyyppistä, ensimmäinen ja toinen kentät tässä tapauksessa olla tyyppiä Integer.

Kun toiminnan perustelut ja firstItem secondItem, lähetetään asianomaiseen rakentajan on oltava tyyppiä kokonaisluku tai alaluokkaan. Jos yrität lähettää dataa tyyppi, joka on erilainen kuin mitä oli määritetty luotaessa objektin, kääntäjä ei anna tätä virhettä. Siten argumenttien rakentaja, kun esine on seuraava: Pari obj = uusi Pair <> (uusi Kokonaisluku (1), uusia Integer (2)). Sama koskee perusteet ja menetelmät setFirst setSecond. Ja kuten varmaan arvata, menetelmiä getFirst getSecond ja palauttaa arvon tyyppiä Integer.

Yleistää useita parametreja luokan tyyppejä

Yleisessä luokat voivat myös ilmoittaa useita parametreja on tyyppiä, joka on asetettu kulmaan suluissa pilkulla. Uusittu tapaus Pari luokka on esitetty alla.

Kuten voidaan nähdä, kun luoda esimerkiksi tämän luokan kulmasulkeissa on ilmoitettava sama määrä eri parametreina. Jos olet perehtynyt tämäntyyppisten datarakenne karttaa, voit nähdä, että se käyttää täsmälleen samaa periaatetta. Siellä ensimmäinen argumentti määrittää näppäintyypistä, ja toinen - tyyppi arvosta. On huomattava, että erilaisia lähetetään, kun objektin argumentit voivat olla päällekkäisiä. Esimerkiksi seuraava mainos Pair luokka esimerkiksi on täysin oikeassa: Pari obj.

Jotkin yleistyksiä

Ennen kuin jatkat, on huomattava, että Java kääntäjä ei luoda erilaisia versioita luokan Pair. Itse parhaillaan kokoamassa yleisen tyypin kaikki tiedot poistetaan. Sen sijaan tuo sopivaa tyyppiä, jolla luodaan erityinen versio Pair luokassa. Kuitenkin ohjelma on edelleen vain geneeristä luokan. Tätä prosessia kutsutaan Java Yleinen puhdistus tyyppi.

Huomaa tärkeä asia. Linkkejä eri versioita samasta java geneerinen luokka ei voi viitata yhteen ja samaan kohde. Eli kai meillä on kaksi linkkiä: Pari obj1 ja pari Obj2. Näin ollen rivi obj1 = Obj2 virhe. Vaikka molemmat muuttujat ovat tyyppiä Pair , esineitä, joihin niissä viitataan, ovat erilaisia. Tämä on hyvä esimerkki siitä, minkä tyyppisiä turvallisuuden Java Yleinen.

Rajoituksia geneeristen luokkien

On tärkeää tietää, että yleistyksiä voidaan soveltaa vain viittaamaan tyyppejä, jotka on välittää parametreja geneerisen luokan Java argumentin on oltava tyypiksi. Nämä yksinkertaiset tyyppejä, kuten, esim., Kahden tai pitkä, ei voida siirtää. Toisin sanoen, seuraava rivi Pair luokka ilmoitusta ei sallita: Pari obj. Kuitenkin, tämä rajoitus ei ole vakava ongelma, koska on olemassa vastaava Java kääre luokka kullekin alkukantaiset. Tarkkaan ottaen jos luokka Pair haluat koteloida kokonaisluku ja totuusarvon avtoupakovka tekee kaiken puolestasi: pari obj = uusi pari <> (25, tosi).

Toinen vakava rajoitus on kyvyttömyys luoda esimerkiksi parametrin tyypin. Esimerkiksi, seuraava rivi aiheuttaa kokoelma virhe: T ensimmäinen = uusi T (). Tämä on selvää, koska et tiedä etukäteen, onko argumentti täyden luokan tai abstrakteja, tai jopa käyttöliittymä. Sama koskee ryhmien luomisessa.

rajallisella

Usein on tilanteita, kun se on tarpeen rajoittaa luetteloa, joita voidaan välitetään argumenttina Java geneerisen luokan. Oletetaan, että meidän luokalla Pair haluamme kapseloida vain numeeriset arvot edelleen matemaattiset operaatiot niistä. Voit tehdä tämän meidän on määriteltävä yläraja parametrin tyyppiä. Se toteutetaan avulla yläluokaksi mainoksia perinyt kaikki argumenttien kulmasulkeissa. Se näyttää seuraavalta: luokka Pari . Tällä tavalla, kääntäjä toteaa, että sen sijaan, että parametri T voi olla substituoitu tai määrä luokkaa tai jonkin sen alaluokkien.

Tämä on yleinen vastaanotto. Tällaiset rajoitukset käytetään usein antamaan yhteensopivuus tyyppi parametrit yhteen ja samaan luokkaan. Mieti esimerkiksi meidän luokka Pair: luokka Pari . Täällä kerromme kääntäjä että tyyppi T voi olla mielivaltainen, ja V: n tyyppi on joko T-tyypin tai jonkin sen alaluokkien.

Rajoittaminen "pohja" on täsmälleen samalla tavalla, mutta sanan sijasta ulottuu kirjoittaa sanan Super. Joka on luokiteltu luokkaan Pari sanoo, että T: n sijasta voidaan korvata tai ArrayList tai mihinkään luokkaan tai käyttöliittymä, jonka se perii.

Generic Java menetelmiä ja rakentajien

Java, yleistyksiä voidaan soveltaa paitsi luokat, mutta myös menetelmiä. Esimerkiksi yleinen menetelmä voidaan julistaa tavallisessa luokassa.

Kuten yllä olevassa kuvassa, mainos yleistynyt menetelmä ei ole iso juttu. Tarpeeksi ennen palautuva menetelmän laittaa kulmaraudat ja määritä laji parametrit niihin.

Jos kaikki tehdään samalla tavalla kuin rakentajan:

Kulmasulkeet tässä tapauksessa se toimittaa suunnittelijan nimi, koska hänellä ei ole paluuta arvoa. Seurausta sekä ohjelmat ovat:

kokonaisluku

jono

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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