Video: Spinosaurus fishes for prey | Planet Dinosaur | BBC 2024
En generisk klasse i Java er en klasse som kan fungere på en bestemt type som er spesifisert av programmereren ved kompilering tid. For å oppnå dette bruker klassedepartementet typeparameter s som fungerer som variabler som representerer typer (for eksempel int eller streng).
For å opprette en generisk klasse, opplister du typeparameteren etter klassenavnet i vinkelbeslag. Typeparameteren angir et navn som du kan bruke i hele klassen hvor som helst du ellers ville bruke en type. For eksempel, her er en forenklet versjon av klassedeklarasjonen for ArrayList-klassen:
ArrayList
Jeg utelukket utvidelsene og implementerer klausuler for å fokusere på den formelle typen parameter:. E-parameteren angir typen av elementene som er lagret i listen.
For å opprette en forekomst av en generisk klasse må du angi den faktiske typen som skal brukes i stedet for typen parameter, slik:
ArrayList myArrayList;
Her er E-parameteren String, så elementstypen for denne forekomsten av ArrayList-klassen er String.
Se nå på erklæringen for add-metoden for ArrayList-klassen:
offentlig boolean add (E o) {// metodekasse utelatt (takk)}
Hvor du normalt forventer å se en parametertype, ser du bokstaven E. Således angir denne metodedeklarasjonen at typen for o-parameteren er typen som er spesifisert for den formelle typen parameter E. Hvis E er String, aksepterer tilleggsmetoden bare Stringobjekter. Hvis du kaller add-metoden som passerer noe annet enn en String-parameter, genererer kompilatoren en feilmelding.
Du kan også bruke en type parameter som returtype. Her er erklæringen for ArrayList-klassen få-metoden:
offentlig E-få (int-indeks) {// metodemetode utelatt (du er velkommen)}
Her er E angitt som returtype. Det betyr at hvis E er String, returnerer denne metoden String-objekter.
Nøkkelen til generikk er at typekontroll skjer ved kompileringstid. Således, etter at du har angitt verdien av en formell type parameter, vet kompilatoren hvordan du gjør typekontrollen som følger med parameteren. Slik vet du ikke om at du skal legge til String-objekter til en ansattes samling.