Kompiuteriai, Programavimas
Java Generics: aprašymas ir metodai
Pradedant su Java kalba išvaizda buvo atlikta keletą pakeitimų, kurie neabejotinai atnešė teigiamų akimirkų jos funkcionalumą daug. Vienas iš šių reikšmingų pokyčių yra Java bendros ar apibendrinimų Įvadas. Ši funkcija ne tik, kad kalba lankstesnė ir universalus, bet taip pat yra daug saugiau požiūriu pareikšti duomenų tipus.
Faktas yra tai, kad prieš generinių vaistų įvedimo Java Bendrasis kodas gali būti sukurta ne tik kalbant apie tipas atskaitos objektą. Tokie ryšiai gali būti priskirtas bet kokį objektą. Galų gale, klasių Java yra numanomi objektas klasės paveldėtojai. Tačiau šis požiūris yra potencialus šaltinis daugeliui klaidų, susijusių su saugumo tipų akivaizdžiai konversijos objektą iš objektą tikslinės rūšies. Kai naudojate apibendrinimus visi tvarsčiai atliekamos netiesiogiai ir automatiškai, panaikinant net klaidų potencialą.
Java Generics: Aprašymas ir pavyzdys
Panagrinėkime paprastą pavyzdį apie apibendrinimo taikymo reguliariai klasių žemiau paveikslėlyje. Ir tada pereikite prie išsamiai išnagrinėti visų subtilybių ir niuansų Java bendrinis.
Atkreipkite dėmesį į tai, kaip klasės deklaracija atsiranda pora. Iškart po klasės pavadinimas, atviro kampo skliausteliuose, kuriame nurodyta raidė T. Taip yra užpildo rūšies, kuri yra kūrimo šios klasės egzempliorius procese bus pakeistas tam tikro tipo. Jis atrodo taip: Pora
Pastaba: pradedant aštuntą versija Java, nurodant tikslinę rūšį, deklaruojant nuoroda laužtiniuose skliaustuose konstruktorius gali būti paliktas tuščias. Taigi pavyzdys gali būti perrašyti, kaip nurodyta aukščiau: Pora
Kai klasė paskelbta tokiu būdu, tada savo kūno, o ne konkrečių tipų srityse, nuorodos, objektų grąžintų metodų, kuriuos galite naudoti šį laišką. Nuo T kuriant klasės objektas yra pakeičiama tam tikros rūšies, pirma ir antra sritys šiuo atveju bus tipo sveikasis skaičius.
Po argumentus ir firstItem secondItem logika, nurodytos atitinkamame konstruktorius taip pat turi būti tipo sveikasis skaičius arba poklasis. Jei bandysite perduoti duomenų tipą, kuris skiriasi nuo tai, kas buvo nurodyta kuriant objektą, kompiliatorių bus ne tegul šią klaidą. Taigi, argumentai konstruktorius, kai objektas bus taip: pora
Apibendrintas su keletu parametrų klasės tipų
Be bendrųjų klasių taip pat gali paskelbti kelis parametrus tipą, yra nustatyti laužtiniuose skliaustuose kableliu. Pertvarkyta pagal atveju pora klasė yra pateikiama žemiau.
Kaip matote, kai jūs sukuriate šios klasės egzempliorių laužtiniuose skliaustuose turėtų nurodyti tą patį skaičių tipus parametrus. Jei esate susipažinę su šia duomenų struktūros, kaip Žemėlapio tipas, galite matyti, kad ji naudoja lygiai tą patį principą. Ten pirmas argumentas nurodo pagrindinių tipą, o antrasis - su verte tipą. Reikėtų pažymėti, kad perduodami rūšys, kai objektas argumentai gali sutapti. Pavyzdžiui, šis skelbimas Pora klasės egzempliorius yra visiškai teisinga: Pora
Kai apibendrinimų funkcijos
Prieš eidami toliau, reikėtų pažymėti, kad "Java kompiliatorius nesukuria skirtingų versijų klasės pora. Iš tiesų, atsižvelgiant į sudarant apibendrintą tipo visą informaciją proceso dalis išbraukiama. Vietoj to, jums atnešti reikiamus tipus, sudaryti specialią versiją Pair klasėje. Tačiau programoje yra dar tik bendrinis versija klasėje. Šis procesas vadinamas Java Bendrasis valymo tipo.
Pastaba svarbų tašką. Nuorodos į skirtingų versijų tos pačios java bendrinio klasės negali nurodyti vieną ir tą patį objektą. Tai, tarkime, mes turime dvi nuorodos: Pora
Apribojimai generinių klases
Svarbu žinoti, kad apibendrinimai gali būti taikomas tik nuoroda tipus, tai yra perduoti parametrai Baziniai klasės Java argumentas turi būti klasės tipo. Šie paprasti tipai, tokie kaip, pavyzdžiui, dvigubą arba ilgas, negali būti perduotos. Kitaip tariant, ši eilutė Pora klasės deklaracija neleidžiami: Pora
Kitas rimtas apribojimas yra nesugebėjimas sukurti parametro tipo atveju. Pavyzdžiui, ši eilutė bus sukelti kompiliavimo klaidą: T pirmąjį = new T (). Tai akivaizdu, nes jūs nežinote, iš anksto, ar argumentas praėjo visą klasę arba abstraktus ar net sąsaja. Tas pats pasakytina ir sukurti masyvų.
ribotas tipai
Gana dažnai pasitaiko situacijų, kai reikia apriboti tipų, kurie gali būti perduodamas kaip argumentas JAVA generic klasę sąrašą. Tarkime, kad mūsų klasės pora norime viską, tik skaitines vertes tolesnio matematines operacijas ant jų. Norėdami tai padaryti, mes turime nustatyti viršutinę ribą parametro tipo. Jis suprato, naudojant superklasę skelbimų paveldėjo visus argumentus praėjo laužtiniuose skliaustuose. Jis atrodys taip: klasės pora
Tai yra bendra priėmimas. Tokie apribojimai yra dažnai naudojami siekiant suteikti suderinamumas tipo parametrus vienoje ir toje pačioje klasėje. Apsvarstykite pavyzdys mūsų klasės poros: klasės pora
"iš apačios" apriboti yra lygiai taip pat, bet vietoj žodžio tęsiasi rašybos žodį super. Tai yra klasifikuojamas klasės pora
Bendriniai Java metodai ir konstruktoriai
Java, apibendrinimai gali būti taikomas ne tik klases, bet taip pat metodus. Pavyzdžiui, bendrinis metodas gali būti deklaruojamos reguliariai klasėje.
Kaip matyti iš aukščiau esantį paveikslėlyje, ad apibendrintas metodas yra ne big deal. Užteks iki puses tipas metodo įdėti laužtiniuose skliaustuose ir nurodyti tipo parametrus jų.
Jei viskas daroma panašiai kaip konstruktorius:
Kampiniai skliausteliuose šiuo atveju įdėti prieš dizaineris vardu, nes jis neturi grąžos vertę. Abiejų programų rezultatas bus:
sveikasis skaičius
styga
Similar articles
Trending Now