Interfaces et polymorphisme : je ne comprends pas cette syntaxe
Résolu
Dédé Grogon
Messages postés
142
Statut
Membre
-
Dédé Grogon Messages postés 142 Statut Membre -
Dédé Grogon Messages postés 142 Statut Membre -
Bonjour,
Je viens de recontrer dans un code Java la ligne suivante. Il s'agit de la définition d'une interface :
public interface MonInterface<T> {
et plus loin je vois des stéréotypes de fonctions de la forme :
public abstract boolean maFonction ( T element );
Je ne comprends pas ces syntaxes. Toute aide sera bienvenue.
Merci :-)
Je viens de recontrer dans un code Java la ligne suivante. Il s'agit de la définition d'une interface :
public interface MonInterface<T> {
et plus loin je vois des stéréotypes de fonctions de la forme :
public abstract boolean maFonction ( T element );
Je ne comprends pas ces syntaxes. Toute aide sera bienvenue.
Merci :-)
A voir également:
- Interfaces et polymorphisme : je ne comprends pas cette syntaxe
- Problème écriture /etc/network/interfaces ✓ - Forum Linux / Unix
- IPv6 désactivé par défaut pour les interfaces à venir ✓ - Forum Windows 10
- Debian et interface graphique - Forum Autres distributions Linux
- Difference entre passerelle et interface ✓ - Forum Réseau
- Pixelisation de l'interface et de l'affichage - Forum Architecture / décoration
1 réponse
Ce sont des types paramétrés. Tu pourras utiliser T avec n'importe quelle classe.
Exemple, avec la classe LinkedList<T> et la méthode add(T) :
Exemple, avec la classe LinkedList<T> et la méthode add(T) :
LinkedList<String> liste1 = new LinkedList<Integer>();
liste1.add(1);
liste1.add(2);
liste1.add(3);
LinkedList<String> liste2 = new LinkedList<String>();
liste2.add("bonjour");
liste2.add("au-revoir");
Dans mon cas, quelle est la bonne syntaxe pour le prototype du constructeur?
En revanche, ce serait différent si le type paramétré n'était pas de classe, par exemple si la méthode est static, ou si elle fait intervenir un autre type paramétré.
Exemple :
public class MaClasse<T> implements MonInterface<T> { public MaClasse() { } public boolean maFonction(T element) { return true; } public void <U> autreFonction(T t, U u) { } public static <T> void methodeStatique(MaClasse<T> classe, T element) { } }Il faudrait surcharger l'opérateur?
Tu peux directement écrire cette ligne de code avec ma classe.
Remarque, il fallait lire : public <U> void autreFonction(T t, U u), dans cet ordre