Video: 20 Essential Excel Functions with Downloadable Reference Guide 2025
Java er en fantastisk måde at programmere på, men nogle gange bliver du nødt til at blive kreativ. For at gøre dette kan du bruge wildcard-type parametre. Antag, at du har en metode, der er erklæret som denne:
offentlig ugyldig addItems (ArrayList liste)
{
// metodekode ikke vist
}
Tankegruppe: Udarbejder følgende sætning?
addItems (ny ArrayList ());
Svar: Nej.
Det er overraskende, fordi
String
er en undertype af
Objekt
. Så du tror, at en parameter, der siger at den accepterer en
ArrayList
af objekter, accepterer en
ArrayList
af strenge.
Desværre virker arv ikke helt på den måde, når det kommer til formelle parametre. I stedet skal du bruge en anden funktion af generik, kaldet jokertegn.
Kort sagt, hvis du vil oprette en metode, der accepterer enhver form for
ArrayList
, skal du kode metoden som denne:
public void addItems (ArrayList liste)
I dette tilfælde angiver spørgsmålet, at du kan kode nogen form for type her.
Det er næsten lige så godt som arv, men hvad hvis du faktisk vil begrænse parameteren til samlinger af en bestemt superklasse? Antag for eksempel at du arbejder på et lønningssystem, der har en
Medarbejder
superklasse med to underklasser med navnet
HourlyEmployee
og
SalariedEmployee
, og du vil have denne metode til at acceptere en
ArrayList
af
Medarbejder
objekter,
HourlyEmployee
objekter eller
SalariedEmployee
objekter?
-klausul til wildcard'en som sådan:
public void addItems (ArrayList list)
Så kan du ringe til
addItems
metode med en
ArrayList
af typen
Medarbejder
,
HourlyEmployee
eller
SalariedEmployee
.
Nu, før du kalder det en dag, tag dette eksempel et skridt videre: Antag, at denne
addItems
metode vises i en generisk klasse, der bruger en formel type parameter
til at angive typen af elementer, som klassen accepterer, og du vil bruge metoden
addItems
til at acceptere en
ArrayList
af typen
E
eller en af dens underklasser. For at gøre det, ville du deklarere
addItems
metoden som denne:
offentlig ugyldig addItems (ArrayList liste)
Her betyder wildcard type parameteren
simpelthen, at
ArrayList < kan være af typen
E
vor enhver type, der strækker sig
E
.