DatoriProgrammēšana

Java Generics: apraksts un metodes

Sākot ar izskatu Java valodas ir notikušas daudzas izmaiņas, kas neapšaubāmi cēla pozitīvus momentus tās funkcionalitāti. Viena no šīm būtiskajām pārmaiņām ir ieviest Java Generic vai vispārinājumiem. Šī funkcija ir ne tikai padarīt valoda elastīgāku un universāls, bet arī daudz drošāka ziņā celt datu tipus.

Fakts ir tāds, ka pirms ieviešanas ģenērisko zāļu Java ģenērisko kodu varētu tikt radīta, ne tikai attiecībā uz tipa atskaites objektu. Šādas saites var piešķirt jebkuru objektu. Galu galā, klases Java ir netieši Objektu klases mantiniekiem. Tomēr šī pieeja ir potenciāls avots daudzu kļūdu, kas saistīti ar drošības veidiem šķietamā pārveidošanu objekta no objekta līdz mērķa veidu. Lietojot vispārinājumus visi pārsēji tiek veikti netieši un automātiski, novēršot pat potenciālu kļūdas.

Java Generics: apraksts un piemērs

Apskatīsim vienkāršu piemēru piemērošanas vispārinājums uz regulāru nodarbību zemāk attēlā. Un tad doties uz detalizētu pārbaudi visus smalkumus un nianses Java Generic.

Pievērsiet uzmanību tam, kā, kādā klasē deklarācija notiek pārī. Tūlīt pēc tam, kad klases nosaukums, atvērt leņķiekavu, kas norādīti burtu T. Tā ir sava veida pildījumu, kas ir procesā veidojot instance šajā klasē tiks aizstāts ar noteikta veida. Tas izskatās šādi: pāris obj = jauns pāris (). Jāatzīmē, ka tā vietā, T var norādīt jebkuru burtu, bet, kā likums, izmanto T, V vai E.

Piezīme: sākot ar astoto versiju Java, norādot mērķa veidu, deklarējot atsauce leņķiekavas konstruktorā var atstāt tukšu. Tātad, piemēram, var pārrakstīt kā iepriekš: Pair obj = jauns pāris <> ().

Ja klase tiek atzīts tādā veidā, tad viņa ķermeni, nevis īpaša veida jomās, saites, objektu atgriež metodes varat izmantot šo vēstuli. Kopš T veidojot klases objekts aizstāj ar konkrēta veida, pirmais un otrais lauki šajā gadījumā būs no tipa skaitlim.

Pēc loģikas argumentiem un firstItem secondItem, kas minētas atbilstošajā konstruktors arī jābūt tipa Integer vai apakšklases. Ja jūs mēģināt, lai pārraidītu datu tipu, kas ir atšķirīgs no tā, ko bija norādīts, veidojot objektu, tad kompilators neļaus šo kļūdu. Tādējādi argumenti konstruktors, kad objekts būs šādi: Pair obj = jauns pāris <> (jauns Integer (1), jauns Integer (2)). Tas pats attiecas uz argumentiem un metodēm setFirst setSecond. Un, kā jūs droši vien uzminējāt, metodes getFirst getSecond un atgriezīs vērtību tipa skaitlim.

Vispārējo ar vairākiem parametriem klases tipiem

In ģeneralizētu klasēs var arī paziņot vairākus parametrus tāda veida, ka tiek noteikts Leņķiekavās ar komatu. Pārveidotas ar lietu Pāru klase tiek uzrādīts zemāk.

Kā jūs varat redzēt, kad jūs izveidojat instancē šajā klasē slīpajās iekavās jānorāda tikpat daudz veidu, kā parametru. Ja Jūs esat iepazinušies ar šāda veida datu struktūras kā karte, jūs varat redzēt, ka tā izmanto tieši to pašu principu. Tur, pirmais arguments norāda uz atslēgu veidu un otrais - uz vērtību veidu. Jāatzīmē, ka nosūtīti veidi, kad objekts argumenti var pārklāties. Piemēram, šāda reklāma Pāru klase instance ir pilnīgi pareizs: pāris obj.

Dažas iezīmes vispārinājumiem

Pirms došanās tālāk, jāatzīmē, ka Java kompilators nerada dažādas versijas klases Pair. Faktiski, šajā procesā apkopot vispārinātā veidā visa informācija tiek dzēsta. Tā vietā, jums dot piemērotus veidus, izveidojot īpašu versiju Pair klasē. Tomēr programmā ir vēl tikai vispārējs versija klasē. Šo procesu sauc par Java Generic tīrīšanas veidu.

Piezīme svarīgu punktu. Saites uz dažādām versijām paša java vispārēju klasē nevar norādīt uz vienu un to pašu objektu. Tas ir, pieņemsim, ka mums ir divas saites: Pair obj1 un pāri obj2. Līdz ar to, saskaņā obj1 = obj2 kļūda. Lai gan abi mainīgie ir tipa pāris , objekti, uz kurām tās attiecas, ir atšķirīgi. Tas ir lielisks piemērs tam, kāda veida drošību Java Generic.

Ierobežojumi generic klasēm

Ir svarīgi zināt, ka vispārinājumi var piemērot tikai, lai norādītu veidu, kas ir nodot parametrus vispārīgu klases java argumentu jābūt klases tipa. Šīs vienkāršās veidi, piemēram,, piemēram, dubultā vai garš, nevar tikt nodota. Citiem vārdiem sakot, šādu rindu pārī klases deklarācija nav atļauts: pāris obj. Tomēr šis ierobežojums nav nopietna problēma, jo ir atbilstoša Java iesaiņojums klases katrai primitīvo tipu. Stingri runājot, ja klasē pāris vēlaties iekapsulēt vesels un Būla vērtība avtoupakovka dara visu, lai jums: pāris obj = jauns pāris <> (25, true).

Vēl viens nopietns ierobežojums ir nespēja izveidot instanci parametru tipu. Piemēram, šādu rindu izraisīs kompilēšanas kļūda: T pirmais = jauns T (). Tas ir skaidrs, jo jūs nezināt jau iepriekš, vai arguments izturējis pilnu klasi vai abstrakts, vai pat interfeisu. Tas pats, lai izveidotu bloki.

ierobežoti veidi

Diezgan bieži ir situācijas, kad tas ir nepieciešams ierobežot veidu sarakstu, kas var tikt nodots kā arguments, lai java vispārēju klasē. Pieņemsim, ka mūsu klases Pair vēlamies ielenkt tikai skaitliskās vērtības turpmākām matemātiskas darbības uz tiem. Lai to izdarītu, mums ir nepieciešams, lai noteiktu maksimālo robežu parametru tipu. Tas tiek īstenots, izmantojot ar superclass reklāmu mantoja visus argumentus pagājis slīpajās iekavās. Tas izskatās šādi: class pāris . Šādā veidā, kompilators konstatē, ka tā vietā, lai parametrs T var būt aizvietotas vai Number klase vai viens no tā apakšklases.

Tā ir izplatīta uzņemšanas. Šādi ierobežojumi bieži izmanto, lai nodrošinātu savietojamību tipa parametrus vienā un tajā pašā klasē. Aplūkosim piemēru mūsu klasē Pair: klase pāris . Šeit mēs pateikt kompilators ka tips T var būt patvaļīgs, un V tipa jābūt vai nu T veida vai viens no tās apakšklases.

"no apakšas", ierobežošana ir tieši tāpat, bet tā vietā par vārda paplašina izskaidrot vārdu super. Tas ir klasificēta klasē pāris saka, ka tā vietā, T, var aizstāt vai ArrayList, vai jebkuru klasi vai saskarni, kas to pārmanto.

Generic Java metodes un konstruktori

Java, vispārinājumi var piemērot ne tikai uz nodarbībām, bet arī metodes. Piemēram, vispārējs metodi var deklarēta regulāri klasē.

Kā redzams augstāk attēlā, reklāma vispārēja metode nav liels darījumu. Enough pirms atgriešanās tips metodi likt leņķiekavu un jānorāda tipa parametrus tiem.

Ja viss tiek darīts, līdzīgi konstruktors:

Leņķiekavas šajā gadījumā likt pirms nosaukuma dizainers, jo viņš nav atgriešanās vērtību. Abu programmu rezultāts būs:

vesels skaitlis

rinda

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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