RačunalaProgramiranje

Java generičkog: opis i metode

Počevši sa pojavom jezika Java je prošla kroz mnoge promjene, koje su nesumnjivo donio pozitivne trenutke u svojoj funkcionalnosti. Jedan od tih značajnih promjena je uvođenje Java Generički ili generalizacije. Ova funkcionalnost ne samo da jezik fleksibilnije i svestran, ali i mnogo sigurniji u smislu približavanja tipove podataka.

Činjenica je da je prije uvođenja generika u Javi generički kod može stvoriti, ne samo u pogledu tipa referentnog objekta. Takve veze može biti dodijeljen bilo koji predmet. Na kraju krajeva, klase u Javi su implicitne nasljednici klasi Object. Međutim, ovaj pristup je potencijalni izvor mnogih grešaka koje se odnose na vrste sigurnosti u očiglednoj konverzije objekta od objekta do cilja tipa. Kada se koristi generalizacije sve odljevaka izvode se implicitno i automatski, eliminirajući čak potencijal za greške.

Java generičkog: opis i primjer

Razmotrimo jednostavan primjer primjene generalizacije redovne nastave na slici u nastavku. , A zatim nastavite na detaljan pregled svih suptilnosti i nijanse Java Generic.

Obratite pažnju na način na koji je deklaracija klase javlja par. Odmah nakon ime klase, otvorenog kuta zagrada, što je ukazivalo na slovo T. To je neka vrsta punila, koja je u procesu stvaranja instance ove klase će biti zamijenjen određeni tip. To izgleda ovako: Pair obj = new Pair (). Treba napomenuti da se umjesto T može odrediti bilo koje slovo, ali, po pravilu, koriste T, V ili E.

Napomena: počevši od osmog verziju Java, navodeći tip cilja kada proglašenja referentni ugao zagrada u konstruktor mogu ostati prazna. Tako primjer se može napisati kao što je gore: Pair obj = new Pair <> ().

Kada je klasa proglašen na takav način, onda u njegovom tijelu, umjesto pojedinih vrsta polja, linkova, predmeti vraćeni metode možete koristiti to pismo. Od T pri kreiranju klasu objekta zamjenjuje određenom tipu, prva i druga polja u ovom slučaju će biti tipa Integer.

Po logici argumenata i firstItem secondItem, odnosi se na odgovarajući konstruktor mora biti tipa Integer ili potklase. Ako pokušate da prenosi tip podataka koji se razlikuje od onoga što je navedeno kada se stvara objekt, kompajler neće dozvoliti da tu grešku. Dakle, argumenti konstruktor kada će objekat biti kako slijedi: Pair obj = new Pair <> (new Integer (1), new Integer (2)). Isto se odnosi i na argumente i metode setFirst setSecond. I kao što ste vjerojatno pogodili, metode getFirst getSecond i da će vratiti vrijednost tipa Integer.

Generalizirani s nekoliko parametara vrsta klase

Uopštene klase također može proglasiti više parametara tipa koji su postavljeni u ugao zagradama zarezom. Redizajnirani slučaj par klase je predstavljen ispod.

Kao što možete vidjeti, kada kreirate instancu ove klase u uglastim zagradama treba da ukaže na isti broj vrsta kao parametara. Ako ste upoznati sa ovom vrstom strukture podataka kao karte, možete vidjeti da koristi isti princip. Tu je prvi argument specificira tip ključa, a drugi - vrstu vrijednosti. Treba napomenuti da su tipovi koji se prenose kada objekt argumenti mogu se preklapati. Na primjer, sljedeći oglas par instance klase je apsolutno u pravu: Pair obj.

Neke funkcije generalizacija

Prije nego što krenemo dalje, treba napomenuti da je Java kompajler ne stvaraju različite verzije klase par. U stvari, u procesu sastavljanja uopštene tip sve informacije se briše. Umjesto toga, možete donijeti odgovarajuće vrste, stvarajući posebnu verziju Pair klase. Međutim, u programu i dalje postoji samo generičku verziju klase. Ovaj proces se naziva Java tip Generic čišćenje.

Napomena važna tačka. Linkove na različite verzije istog Java generičke klase ne mogu ukazati na jedan te isti predmet. To je, pretpostavimo da imamo dva linka: Pair obj1 i Pair obj2. Shodno tome, u skladu obj1 = obj2 greške. Iako su oba varijable su tipa Pair , objekti na koje se odnose, su različiti. Ovo je najbolji primjer vrste sigurnosti u Javi Generic.

Ograničenja u generičke klase

Važno je znati da generalizacije se može primijeniti samo na referentne vrste, to je da prođe parametara generičke klase java argument mora biti tipa klase. Ove jednostavne vrste, kao što su, npr, dva ili dugo, ne mogu se prenositi. Drugim riječima, sljedeći red par klasa deklaracija nije dozvoljeno: Pair obj. Međutim, ovo ograničenje nije ozbiljan problem, jer postoji odgovarajući Java klasa omotač za svaki primitivni tip. Strogo govoreći, ako klasi par želite da obuhvati cijeli broj i Boolean vrijednost avtoupakovka radi sve za vas: Pair obj = new Pair <> (25, true).

Još jedan ozbiljan ograničenje je nemogućnost da se stvori instanca parametar tipa. Na primjer, sledeći red će dovesti do kompilaciju greška: T prvi = novi T (). To je očigledno, jer ne znate unaprijed da li argument je donijela punu klasu ili apstraktno, ili čak i sučelje. Isto važi i za stvaranje nizova.

ograničene vrste

Vrlo često postoje situacije kada je potrebno da se ograniči popis tipova koji se može prenijeti kao argument Java generičke klase. Pretpostavimo da smo u našem razredu par želi da obuhvati samo numeričke vrijednosti za daljnje matematičke operacije na njima. Da biste to učinili moramo definirati gornju granicu parametar tipa. To se ostvaruje pomoću natklase oglasa naslijedio sve argumenata u uglastim zagradama. To će izgledati ovako: class Pair . Na ovaj način, kompajler smatra da umjesto parametra T može se zamijeniti ili Broj klase ili jedan od njegovih podklase.

Ovo je uobičajena prijem. Takva ograničenja se često koriste za pružanje tip kompatibilnost parametara u jednoj i istoj klasi. Razmotrimo primjer u našem razredu Pair: klasa Pair . Ovdje kažemo kompajler da je tip T može biti proizvoljan, i tip V mora biti ili tipa T ili jedan od njegovih podklase.

Ograničavanje "dnu" je potpuno isti način, ali umjesto riječi proteže se piše super riječ. To je klasificiran klasu par kaže da umjesto T može zamijeniti ili ArrayList, ili bilo koje klase ili interfejs koji se nasljeđuje.

metode generički Java i konstruktora

U Javi, generalizacije mogu se ne primjenjuje samo na nastavu, ali i metoda. Na primjer, generički metoda može biti proglašen u redovnom razredu.

Kao što se vidi na slici gore, ad generalizovati metoda nije velika stvar. Dosta prije povratni tip metode da stavi zagrade kuta i odrediti parametre tipa u njima.

Ako je sve učinjeno slično kao konstruktor:

Kut zagradama u ovom slučaju stavio ispred imena projektanta, jer on nema povratnu vrijednost. Rezultat oba programa će biti:

integer

niz

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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