Computere, Programmering
Java Generics: beskrivelse og metoder
Startende med udseendet af Java-sproget har gennemgået en masse ændringer, som utvivlsomt bragt positive øjeblikke i sin funktionalitet. En af disse væsentlige ændringer er indførelsen af Java Generisk eller generaliseringer. Denne funktionalitet ikke kun gøre sproget mere fleksible og alsidige, men også meget sikrere i form af at bringe de datatyper.
Faktum er, at forud for indførelsen af generiske lægemidler i Java generiske kode kunne skabes, ikke blot med hensyn til typebetegnelse Objekt. Sådanne links kan tildeles ethvert objekt. Efter alt, klasser i Java er implicitte Objekt klasse arvinger. Men denne tilgang er en potentiel kilde til mange fejl i forbindelse med sikkerhed typer i den tilsyneladende omdannelse af et objekt fra objektet til måltypen. Ved brug af generaliseringer udføres alle afstøbninger implicit og automatisk, hvilket eliminerer endda muligheden for fejl.
Java Generics: beskrivelse og eksempel
Lad os betragte et simpelt eksempel på anvendelsen af generalisering til almindelige klasser i nedenstående figur. Og derefter gå videre til en detaljeret undersøgelse af alle de finesser og nuancer i Java Generisk.
Vær opmærksom på den måde, som klassen erklæringen sker Pair. Umiddelbart efter navnet klasse, åbne vinkelparenteser, hvilket indikerede bogstavet T. Det er en slags fyldstof, som er i færd med at skabe en instans af denne klasse vil blive erstattet af en bestemt type. Det ser ud som følger: Par
Bemærk: startende med den ottende udgave af Java, som lægemidlet type, når erklære henvisning vinkelbeslag i konstruktøren kan efterlades tomt. Så eksempel kan omskrives som ovenfor: Par
Når en klasse er erklæret på en sådan måde, så i hans krop i stedet for specifikke typer af felter, links, objekter returneres af de metoder, du kan bruge det bogstav. Idet T ved oprettelse klassen objekt er erstattet af en bestemt type, første og andet felter i dette tilfælde vil være af typen Integer.
Efter logikken i de argumenter og firstItem secondItem, henvises til det kompetente konstruktør skal også være af typen Heltal eller underklasse. Hvis du forsøger at sende en datatype, der er forskellig fra det, der blev angivet ved oprettelse et objekt, vil compileren ikke lade denne fejltagelse. Således argumenter konstruktøren, når et objekt vil være som følger: Et par
Generaliseret med flere parametre klasse typer
I generelle klasser kan også erklære flere parametre af typen, der er angivet i vinkelbeslag med et komma. Redesignet af en sag Pair klasse er præsenteret nedenfor.
Som du kan se, når du opretter en instans af denne klasse i vinkelparenteser bør angive det samme antal typer som parametre. Hvis du er fortrolig med denne type data struktur som et kort, kan du se, at det bruger nøjagtig det samme princip. Der, det første argument angiver den type nøgle, og den anden - den type værdi. Det skal bemærkes, at de typer overføres, når et objekt argumenter kan overlappe. For eksempel følgende annonce Pair klasse instans er helt korrekt: Par
Nogle funktioner i generaliseringer
Inden vi går videre, skal det bemærkes, at Java-oversætteren ikke skaber forskellige versioner af klassen Pair. I virkeligheden, i færd med at udarbejde en generaliseret form alle oplysningerne slettes. I stedet kan du bringe de relevante typer, hvilket skaber en særlig version af Pair klasse. Men i programmet er der stadig kun en generisk version af klassen. Denne proces kaldes i Java Generisk rengøring type.
Bemærk et vigtigt punkt. Links til forskellige versioner af den samme java generiske klasse kan ikke pege på én og samme objekt. Det vil sige, formoder vi har to links: Pair
Restriktioner for generiske klasser
Det er vigtigt at vide, at generaliseringer kan kun anvendes til at henvise til typer, der er til at videregive parametre generiske klasse java argument skal være en klasse type. Disse enkle typer, såsom f.eks, dobbelt- eller lange, kan ikke overføres. Med andre ord, er følgende linje Pair klasse erklæring ikke tilladt: Par
En anden alvorlig begrænsning er den manglende evne til at oprette en forekomst af parameteren type. For eksempel vil følgende linje forårsage en kompileringsfejl: T først = nye T (). Det er indlysende, fordi du ikke ved på forhånd, om et argument bestået en fuld klasse eller abstrakt, eller endda grænseflade. Det samme gælder for at skabe arrays.
begrænsede typer
Ganske ofte er der situationer, hvor det er nødvendigt at begrænse listen af typer, der kan overføres som et argument til Java generiske klasse. Lad os antage, at vi i vores klasse Pair ønsker at indkapsle kun de numeriske værdier for yderligere matematiske operationer på dem. For at gøre dette har vi brug for at definere den øvre grænse for parameteren type. Det realiseres ved hjælp af en superklasse annoncer arvet alle de argumenter bestået i vinkelbeslag. Det vil se ud som følger: klasse Pair
Dette er en fælles reception. Sådanne restriktioner er ofte bruges til at give kompatibilitet typen parametre i en og samme klasse. Betragt eksemplet i vores klasse Pair: klasse Par
Begrænsning af "bunden" er præcis på samme måde, men i stedet for ordet strækker sig til stave ordet super. Det er klassificeret klasse Pair
Generiske Java metoder og konstruktører
I Java kan generaliseringer anvendes ikke blot til klasserne, men også metoder. For eksempel kan en generisk metode erklæres i en almindelig klasseundervisning.
Som det fremgår af ovenstående figur, annoncen generaliseret metode er nogen big deal. Nok før returnering type en metode til at sætte vinkelbeslag og angive den type parametre i dem.
Hvis alt er gjort på samme måde som konstruktør:
Vinkelbeslag i dette tilfælde forelagt navnet på designeren, fordi han ikke har nogen returværdi. Resultatet af begge programmer vil være:
Integer
String
Similar articles
Trending Now