Question sur la généricité

Question sur la généricité - Java - Programmation

Marsh Posté le 21-11-2010 à 17:40:28    

Bonjour à tous !
 
Voilà, j'ai une fonction qui doit retourner le minimum d'une liste qui peut contenir à la fois des entiers, des doubles, etc.
Le problème est que lors de l'utilisation de cette méthode pour une liste d'entiers, il me dit que : min = (listeNote.getNote(i)) attend un double en retour (normal min est de type double).
 
Ma question est : de quel type déclarer min, sachant que je peux utiliser des listes de nombres différents (int, double, etc.) ?
C'est un problème non seulement pour cette méthode, mais aussi pour moi car je n'arrive pas à saisir comment je pourrais résoudre ce problème dans d'autres situations.
 

Code :
  1. public static double getMinimum(ListeNotes<? extends Number> listeNote) {
  2.      
  3.         double min = listeNote.getNote(1).doubleValue();
  4.         for (int i = 1; i < listeNote.getNbNotes() + 1; i++) {
  5.             if (listeNote.getNote(i).doubleValue() <= min) {
  6.                 min = (listeNote.getNote(i);
  7.             }
  8.         }
  9.         return min;
  10.     }


 
Merci à tous ceux qui voudront bien m'éclaircir :)

Reply

Marsh Posté le 21-11-2010 à 17:40:28   

Reply

Marsh Posté le 22-11-2010 à 22:22:24    

Tu converties toujours les objets de ta liste en double, pourquoi tu ne le fais pas ligne 9 ?
 
Sinon "listNote" est une liste Number, declarer "min" en tant que Number fera l'affaire. Si tu veux absolument un double en sortie, tu peux toujours appeler doubleValue() a la fin. Mais pour moi, cela a plus de sens de retourner un Number.
 

Reply

Marsh Posté le 22-11-2010 à 22:45:31    

mr simon a écrit :

Tu converties toujours les objets de ta liste en double, pourquoi tu ne le fais pas ligne 9 ?
 
Sinon "listNote" est une liste Number, declarer "min" en tant que Number fera l'affaire. Si tu veux absolument un double en sortie, tu peux toujours appeler doubleValue() a la fin. Mais pour moi, cela a plus de sens de retourner un Number.
 


Pas mieux. Accessoirement, si tu veux garder ton type d'entrée tu peux aussi génériciser la méthode statique, et accessoirement:

  • Pourquoi tu indexes à partir de 1 [:pingouino dei] En Java, comme dans la majorité des langages, l'indexation se fait à 0
  • Pourquoi ne pas utiliser des collections standard, et des noms de méthodes standard du framework Collection? Genre Collection#size() et List#get(int) que n'importe quel dev java reconnaîtra plutôt que getNote() et getNbNote() qui ne va parler à personne (d'autant moins s'ils ne sont pas francophones)?
  • En parlant de Collection, il y a une méthode Collections#min(Collection), pourquoi réinventer la roue?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed