Video: LinkedList med Java 2024
En generisk klass i Java är en klass som kan fungera på en specifik typ som programmeras vid kompilering tid. För att uppnå detta använder klassdefinitionen typparameter s som fungerar som variabler som representerar typer (som int eller sträng).
För att skapa en generisk klass, listar du typparametern efter klassnamnet i vinklar. Typparametern anger ett namn som du kan använda i hela klassen var som helst du annars skulle använda en typ. Till exempel är här en förenklad version av klassdeklarationen för ArrayList-klassen:
Public Class ArrayList
Jag utelämnade extends och implementerar klausulerna för att fokusera på den formella typen parameter:. E-parametern anger typen av element som lagras i listan.
För att skapa en instans av en generisk klass måste du ange den faktiska typen som ska användas i stället för typparametern, så här:
ArrayList myArrayList;
Här är E-parametern String, så elementstypen för denna instans av klassen ArrayList är String.
Se nu på deklarationen för add-metoden för ArrayList-klassen:
offentligt booleansk tillägg (E o) {// metodens metod utelämnad (tack)}
Där du normalt förväntar sig att se en parametertyp ser du bokstaven E. Således anger den här metoden deklarationen att typen för o-parametern är den typ som anges för den formella typparametern E. Om E är String accepterar tilläggsmetoden endast Stringobjekt. Om du kallar add-metoden som passerar något annat än en String-parameter, genererar kompilatorn ett felmeddelande.
Du kan också använda en typparameter som returtyp. Här är deklarationen för ArrayList-klassmetoden:
offentligt E get (int index) {// metodkod utelämnat (du är välkommen)}
Här anges E som returtyp. Det betyder att om E är String, returnerar denna metod strängobjekt.
Den viktigaste fördelen med generics är att typkontrollen sker vid kompileringstid. Således, när du har angett värdet för en formell typparameter, vet kompilatorn hur man gör typkontrollen som indikeras av parametern. Så vet man att du inte låter dig lägga till strängobjekt till en anställdesamling.