Video: Android 101 by Fred Widjaja 2025
En generisk klasse i Java er en klasse, der kan fungere på en bestemt type, der er angivet af programmøren ved kompilering tid. For at opnå dette bruger klassed definitionen type parameter s , der fungerer som variabler, der repræsenterer typer (f.eks. Int eller streng).
For at oprette en generisk klasse, lister du typeparameteren efter klassenavnet i vinkelbeslag. Typeparameteren angiver et navn, som du kan bruge i hele klassen, hvor du ellers ville bruge en type. Her er for eksempel en forenklet version af klassedeklarationen for ArrayList-klassen:
Public Class ArrayList
Jeg udlød udvidelserne og implementerer klausuler for at fokusere på den formelle type parameter:. E-parameteren angiver typen af de elementer, der er gemt i listen.
For at oprette en forekomst af en generisk klasse skal du angive den aktuelle type, der skal bruges i stedet for typeparametre, som denne:
ArrayList myArrayList;
Her er E-parameteren String, så elementtypen for denne forekomst af ArrayList-klassen er String.
Se nu på erklæringen for add-metoden til ArrayList-klassen:
offentlig booleansk tilføjelse (E o) {// legemetode udeladt (tak)}
Hvor du Normalt forventer du at se en parametertype, kan du se bogstavet E. Således angiver denne metodeangivelse, at typen for o-parameteren er den type, der er angivet for den formelle typeparameter E. Hvis E er String, accepterer tilsætningsmetoden kun Stringobjekter. Hvis du kalder tilsætningsmetoden passerer noget andet end en String-parameter, genererer kompilatoren en fejlmeddelelse.
Du kan også bruge en type parameter som returtype. Her er erklæringen til ArrayList class get-metoden:
offentligt E get (int-indeks) {// krop af metode udeladt (du er velkommen)}
Her er E angivet som returtype. Det betyder, at hvis E er String, returnerer denne metode String-objekter.
Nøglefordelen ved generik er, at typekontrol sker på kompileringstidspunktet. Således, når du har angivet værdien af en formel type parameter, kan kompilatoren vide, hvordan du foretager typekontrollen, der indikeres af parameteren. Sådan ved det ikke at lade dig tilføje String-objekter til en medarbejderindsamling.