Vidéo: FortiGate Cookbook - SSL VPN Web/Tunnel Mode (5.6) 2024
Java est un excellent moyen de programmer, mais parfois vous devrez être créatif. Pour ce faire, vous pouvez utiliser des paramètres de type générique. Supposons que vous ayez une méthode déclarée comme ceci:
public void addItems (liste ArrayList)
{
// corps de la méthode non affiché
}
Question posée: Est-ce que l'instruction suivante compile?
addItems (new ArrayList ());
Réponse: Non.
C'est surprenant parce que
String
est un sous-type de
Object
. On pourrait donc penser qu'un paramètre qui dit qu'il accepte un objet
ArrayList
accepte un
ArrayList
de chaînes.
Malheureusement, l'héritage ne fonctionne pas tout à fait de cette façon quand il s'agit de paramètres de type formels. Au lieu de cela, vous devez utiliser une autre caractéristique des génériques, appelés caractères génériques.
En résumé, si vous voulez créer une méthode qui accepte n'importe quel type de
ArrayList
, vous devez coder la méthode comme ceci:
public void addItems (ArrayList list
Dans ce cas, le point d'interrogation indique que vous pouvez coder n'importe quel type de type ici.
C'est presque aussi bon que l'héritage, mais que se passe-t-il si vous voulez réellement limiter le paramètre aux collections d'une superclasse spécifique? Par exemple, supposons que vous travaillez sur un système de paie qui a une superclasse
Employé
avec deux sous-classes nommées
HourlyEmployee
et
SalariedEmployee
, et vous voulez que cette méthode accepte des objets
ArrayList
sur
Employee
,
HourlyEmployee
ou des objets
SalariedEmployee
?
Dans ce cas, vous pouvez ajouter une clause
extends
au caractère générique, comme ceci:
public void addItems (liste ArrayList)
Vous pouvez ensuite appeler le
méthode addItems
avec une
ArrayList
de type
Employee
,
HourlyEmployee
ou
SalariedEmployee
.
Maintenant, avant de l'appeler un jour, prenez cet exemple un peu plus loin: Supposons que cette méthode
addItems
apparaisse dans une classe générique qui utilise un paramètre de type formel
pour spécifier le type d'éléments class accepte, et vous voulez que la méthode
addItems
accepte une
ArrayList
de type
E
ou l'une de ses sous-classes. Pour ce faire, vous devez déclarer la méthode
addItems
comme ceci:
public void addItems (liste ArrayList)
Ici, le paramètre de type générique
signifie simplement que
ArrayList < peut être de type
E
pour tout type qui s'étend
E
.