Video: Android 101 by Fred Widjaja 2024
A generieke klasse in Java een klasse is die kan werken op een specifiek type dat door de programmeur is opgegeven bij het compileren tijd. Om dit te bereiken gebruikt de klassedefinitie type parameter s die fungeren als variabelen die typen vertegenwoordigen (zoals int of String).
Als u een generieke klasse wilt maken, geeft u de typeparameter achter de klassennaam tussen punthaken. Met de parameter type geeft u een naam op die u overal in de klasse kunt gebruiken, overal waar u anders een type zou gebruiken. Hier is bijvoorbeeld een vereenvoudigde versie van de klassendeclaratie voor de klasse ArrayList:
public class ArrayList
Ik heb de clausules extends en implementaties weggelaten om me te concentreren op de parameter formeel type:. De parameter E geeft het type elementen aan dat in de lijst is opgeslagen.
Als u een instantie van een generieke klasse wilt maken, moet u het werkelijke type opgeven dat in plaats van de parameter type wordt gebruikt, zoals dit:
ArrayList myArrayList;
Hier is de parameter E String, dus het elementtype voor dit exemplaar van de klasse ArrayList is String.
Kijk nu naar de verklaring voor de methode toevoegen voor de klasse ArrayList:
public boolean add (E o) {// aantal verwijderde methoden (thank you)}
Waar u normaal verwacht een parameter type te zien, ziet u de letter E. Deze methode-declaratie geeft dus aan dat het type voor de parameter o het type is dat is opgegeven voor de formele parameter E. Als E String is, accepteert de methode add example alleen String-objecten. Als u de methode Add aanroept die iets anders dan een String-parameter doorgeeft, genereert de compiler een foutbericht.
U kunt ook een typeparameter gebruiken als retourtype. Hier is de verklaring voor de methode ArrayList-methode:
openbare E get (int-index) {// verzameling van de methode is weggelaten (graag gedaan)}
Hier wordt E opgegeven als retourtype. Dat betekent dat als E String is, deze methode String-objecten retourneert.
Het belangrijkste voordeel van generieke geneesmiddelen is dat typecontrole plaatsvindt tijdens het compileren. Dus, nadat u de waarde van een formele typeparameter hebt opgegeven, weet de compiler hoe de typecontrole moet worden uitgevoerd die door de parameter wordt geïmpliceerd. Dat is hoe het ervoor zorgt dat je String-objecten niet aan een werknemersverzameling kunt toevoegen.