Pour compléter ce qui a déjà été dit :
1- le nom de la méthode devrait commencer par une minuscule (conventions Java)
public List<String> getSymptoms() { ... }
2- il me paraît illogique de définir la propriété result en ArrayList dans la mesure où on retourne une instance List.
Normalement, on ferait :
1 2 3 4
| ]public List<String> getSymptoms() {
List<String> result = new ArrayList<>(); <---- à noter qu'on peut omettre le type côté instanciation, mais on peut aussi le laisser
...
} |
(même si fondamentalement, ça ne change pas grand chose vu que ArrayList implémente List)

Envoyé par
Annelore
Peut-on parler d'une création de cette interface/la manière dont c'est écrit?
Je ne comprends pas ta question, mais elle me laisse penser que tu n'as pas bien compris la notion d'interface.
Pour faire simple :
Une interface décrit des fonctionnalités (méthodes), pas la façon dont elles sont implémentées.
On parle souvent de "contrat".
Dans une classe qui étend une interface, on doit définir le "comment" sont implémentées les fonctionnalités.
On doit définir toutes les méthodes de l'interface
Un petit exemple pour illustrer le concept :
Une interface "Mobile" qui définit les méthodes avancer(int vitesse), reculer(int vitesse), tourner(float angle).
Deux classes qui implémentent cette interface Voiture et Bateau.
Il va de soi que la manière d'avancer, reculer ou tourner n'est pas la même pour une voiture que pour un bateau, par contre, les 2 peuvent le faire.
L'intérêt de notre interface se comprend mieux du point de vue d'un contrôleur de trafic.
Lui se fiche de savoir comment on avance, recule ou tourne, il donne juste ses ordres, charge aux classes de faire.
Du coup, lui manipulera des interfaces Mobile et n'aura donc pas besoin de savoir comment physiquement les instances derrières ces Mobiles font.
A noter qu'on peut définir une interface de manière "inline" dans une classe.
On parle alors de classe anonyme.
Partager