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?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Sujets relatifs:

Leave a Replay

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