Java Generiske Veiledning – Hva er Generiske og Hvordan Bruke Dem?

Java Generiske legemidler er en av de viktigste funksjonene i Java-språket. Ideen bak generiske legemidler er ganske enkel, men det noen ganger kommer ut som et komplekst på grunn av overgangen fra vanlig syntaks som er forbundet med det.

formålet med denne veiledningen er å introdusere deg til denne nyttig konsept av generiske legemidler i en enkel å forstå måte.

Men før du dykker ned generiske seg selv, la oss finne ut hvorfor Java generiske det var behov for i første omgang.,

Formålet med Java Generiske

Før introduksjon av generiske legemidler i Java 5, kan du skrive og kompilere en kodebit som dette uten å kaste en feil eller en advarsel:

kan Du legge til verdier av enhver type til en liste eller et annet Java-Samling uten å erklære hvilken type data det lagrer. Men når du hente verdier fra listen, må du eksplisitt kastet den til en bestemt type.

Tenk iterating gjennom listen ovenfor.,

Slik at etableringen av en liste uten først å erklære den lagrede data type, som vi gjorde, kunne resultere i programmerere å gjøre feil som ovenfor som kaster ClassCastExceptions under kjøring.

Generics ble innført for å hindre programmerere fra å gjøre slike feil.

Med generiske legemidler, kan du uttrykkelig erklærer data type som kommer til å bli lagret når du oppretter en Java-Samling som følgende eksempel viser.,

Merk: Du kan fortsatt lage et Java-collection-objekt uten å angi lagrede data type, men det er ikke anbefalt.

Nå, du kan ikke feilaktig lagre et Heltall i en Streng type-listen uten å kaste en compile-time feil. Dette sikrer at ditt program ikke kjører inn i runtime feil.

Den viktigste hensikten med innføring av generiske legemidler til Java-var for å unngå å kjøre inn i ClassCastExceptions under kjøring.

Opprette Java Generiske

Du kan bruke generics for å lage Java-klasser og metoder., La oss se på noen eksempler på hvordan å lage generiske av hver type.

Generisk Klasse

Når du oppretter en generisk klasse, parameter for klassen er lagt til slutten av klasse navn innen vinkel <> parentes.

Her T er data parameter. T, N, og E er noen av de bokstavene som brukes for data type parametere i henhold til Java-konvensjoner.,

I eksempelet ovenfor, kan du sende det til en bestemt datatype når du oppretter en GenericClass objekt.

Du kan ikke sende en primitiv datatype til data parameter når du oppretter en generisk klasse objektet. Bare datatyper som strekker objekttype kan sendes som type parametere.

For eksempel slik:

Generiske Metoder

å Opprette generiske metoder følger et lignende mønster for å lage generiske klasser. Du kan implementere en generisk metode inne i en generisk klasse, samt en ikke-generisk en.,

Her, kan du sende en matrise av en bestemt type for å parameterize metoden. Generisk metode PrintItems() – koden gjennom bestått utvalg og skriver ut de elementer som er lagret akkurat som en vanlig Java-metode.

Avgrenset Type Parametere

Så langt, det generiske klasser og metoder vi har opprettet ovenfor kan være parameterized til hvilken som helst datatype annet enn primitive typer. Men hva hvis vi ønsket å begrense typer data, som kan være bestått for å generiske legemidler? Dette er hvor avgrenset type parametere kommer inn.,

Du kan bundet typer data, som er akseptert av en generisk klasse eller metode ved å spesifisere at det bør være en underklassen av en annen datatype.

For eksempel slik:

Her UpperBoundedClass og UpperBoundedMethod kan bare være parameterized ved hjelp av undergrupper av List data-type.

List datatype fungerer som en øvre grense for parameter. Hvis du prøver å bruke en datatype som ikke er en undertype av List, det vil kaste en compile-time feil.

grensene er ikke begrenset til bare klasser., Du kan sende grensesnitt som godt. Utvide grensesnitt betyr, i dette tilfellet, å implementere grensesnittet.

En parameter kan også ha flere grenser som dette eksempelet viser.

aksepterer datatype må være en underklassen av både Dyr og Pattedyr klasser. Hvis en av disse grensene er en klasse, det må komme først i bundet erklæring.

I eksempelet ovenfor, hvis Pattedyr er en klasse og Dyr er et grensesnitt, Pattedyr må komme først, som vist ovenfor. Ellers koden kaster en compile-time feil.,

Java Generiske Jokertegn

Jokertegn er brukt til å passere på parametere av generiske typer av metoder. I motsetning til en generisk metode, her, er den generisk parameter er gått til parametere som er akseptert av metoden, som er forskjellig fra de data parameter som vi diskuterte ovenfor. Jokertegn er representert ved den ? symbol.

over printItems() metode aksepterer lister av data type som parameter. Dette hindrer programmerere fra å måtte gjenta koder for lister av ulike typer data, som ville vært tilfelle uten generiske legemidler.,

Øvre Avgrenset Jokertegn

Dersom vi ønsker å begrense typer data som er lagret i listen akseptert av metode, kan vi bruke avgrenset jokertegn.

Eksempel:

printSubTypes() metode godtar bare viser at store undergrupper av Farge. Det aksepterer en liste over RedColor eller BlueColor objekter, men ikke akseptere en liste over Dyr som objekter. Dette er fordi Dyr er ikke en undertype av Farge. Dette er et eksempel på en øvre avgrenset jokertegn.,

Lavere Avgrenset Jokertegn

på samme måte, hvis vi hadde:

da printSuperTypes() metode godtar bare viser at store super typer Hunden klasse. Det ville akseptere en liste over Pattedyr eller Dyr objekter, men ikke en liste over LabDog objekter fordi LabDog er ikke en superclass av Hund, men en underklassen. Dette er et eksempel på et lavere avgrenset jokertegn.

Konklusjon

Java Generiske har blitt en funksjon som programmerere kan ikke leve uten, siden dens introduksjon.

Denne populariteten er på grunn av sin innvirkning på noe som gjør programmerere’ liv enklere., Annet enn å hindre dem fra å gjøre feil koding, bruk av generiske gjør koden mindre repeterende. La du merke til hvordan det generaliserer klasser og metoder for å unngå å måtte gjenta koden for ulike datatyper?

å Ha en god forståelse av generiske legemidler er viktig for å bli en ekspert i språket. Så, å anvende det du har lært i denne opplæringen i praktiske koden er veien å gå fremover nå.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *