Video: GTA 5 Online - How To Create The Joker Outfit In GTA 5 Online (Customization Tutorial) 2024
Java is een geweldige manier om te programmeren, maar soms moet je creatief zijn. Hiertoe kunt u jokertype-parameters gebruiken. Stel dat u een methode heeft die als volgt wordt verklaard:
public void addItems (ArrayList-lijst)
{
// body of methode niet getoond
}
Gedachte vraag: wordt de volgende verklaring gecompileerd?
addItems (nieuwe ArrayList ());
Antwoord: Nee.
Dat is verrassend omdat
String
een subtype is van
Object
. Dus je zou denken dat een parameter die zegt dat het een
ArrayList
van objecten accepteert, een
ArrayList
van strings accepteert.
Helaas werkt overerving niet zo goed als het gaat om formele typeparameters. In plaats daarvan moet u een ander kenmerk van generieken gebruiken, de wildcards.
Kort gezegd, als u een methode wilt maken die elk type
ArrayList
accepteert, moet u de methode als volgt coderen:
public void addItems (ArrayList-lijst)
In dit geval geeft het vraagteken aan dat u hier elk type type kunt coderen.
Dat is bijna net zo goed als overerving, maar wat als u de parameter eigenlijk wilt beperken tot collecties van een specifieke superklasse? Stel dat u werkt aan een salarissysteem met een
Employee
superklasse met twee subklassen met de naam
HourlyEmployee
en
SalariedEmployee
en u wilt dat deze methode accepteert een
ArrayList
van
Employee
-objecten,
HourlyEmployee
-objecten of
SalariedEmployee
-objecten?
In dat geval kunt u een
extends
-clausule toevoegen aan het jokerteken, zoals dit:
public void addItems (ArrayList-lijst)
Dan kunt u de
addItems
-methode met een
ArrayList
van het type
Employee
,
HourlyEmployee
of
SalariedEmployee
.
Nu, nog voordat u het een dag noemt, neem dit voorbeeld een stap verder: stel dat deze
addItems
-methode wordt weergegeven in een generieke klasse die een formele parameter
gebruikt om het type elementen te specificeren dat de class accepteert, en u wilt dat de
addItems
-methode een
ArrayList
van het type
E
of een van zijn subklassen accepteert. Hiertoe declareert u de
addItems
-methode als volgt:
public void addItems (ArrayList-lijst)
Hier betekent de parameter
van het wildcard eenvoudig dat de
ArrayList < kan van het type
E
zijn voor elk type dat
E
verlengt.