Comme tu as le courage de répondre, j'ai complété un peu les choses, modifié deux ou trois trucs, pour une nouvelle version.
L'exo se complexifie, on ne fait plus de print (ça, c'est un peu trop facile), mais une moyenne (ça pourrait être du max, du min, peu importe).
importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collection;importjava.util.List;publicclassClassA{// here, you just say what types are acceptedprivateclassClassB<IextendsInteger,SextendsString>{// it's a bit more wrapping, but for the funprivateList<Object>l;publicClassB(){l=newArrayList<Object>();}privatevoidadd(Classc,Object...params)throwsException{l.addAll(checkIn(c,params));}// here we can do a bunch of checks. Choose your own. It's just the entry gateprivateCollection<?extendsObject>checkIn(Classc,Object...params)throwsException{if(params.length==1&¶ms[0].getClass().equals(c))returnArrays.asList(params[0]);//a bit ugly here. Something better can be doneif(params[0].getClass().equals(c)){returnArrays.asList(params);}thrownewException("You shall not pass!");}publicvoidaddInt(Ii)throwsException{add(i.getClass(),i);}publicvoidaddManyInts(I...i)throwsException{add(i[0].getClass(),i);}publicvoidaddString(Ss)throwsException{add(s.getClass(),s);}publicvoidaddManyStrings(S...s)throwsException{add(s[0].getClass(),s);}publicObjectget(inti){returnl.get(i);}publicintsize(){returnl.size();}privateintgetNumerOfNumbers(){intr=0;for(Objecto:l){if(oinstanceofNumber)r++;}returnr;}// here we just want to do something more subtle than printpublicdoublegetMean()throwsException{intsum=this.getNumerOfNumbers();if(sum==0)thrownewException("Maybe you want numbers...");doublemean=0;for(Objecto:l){if(oinstanceofNumber){mean+=((Number)o).doubleValue()/sum;}}returnmean;}}publicstaticvoidmain(String[]args)throwsException{ClassAa=newClassA();a.doThings();}publicvoiddoThings()throwsException{ClassB<Integer,String>maListeDeBidules=newClassB<>();maListeDeBidules.addInt(1);// okmaListeDeBidules.addString("deux");// okmaListeDeBidules.addManyInts(3,4,5,6,7,8);// okmaListeDeBidules.addManyStrings("neuf","dix","onze","douze","treize","quatorze");// okfor(inti=0;i<maListeDeBidules.size();i++)System.out.println("mon bidule "+(i+1)+" : "+maListeDeBidules.get(i));System.out.println("La moyenne dans ma liste de bidules est de : "+maListeDeBidules.getMean());}}
J'ai suprimmé mon extends, comme ça, il n'y a que ce que j'expose qui est dispo. Dans la version précédente, j'avais commencé à préparer le boulot, tu vois que maintenant j'ai des méthodes avec varargs et du coup c'est assez pratique pour faire de l'ajout en masse.
Voilà, comme tu m'a donné ta version des choses, j'ai pris un peu plus de temps pour t'en donner encore une autre ;)
Pas sûr qu'elle te plaise toujours plus. Et c'est du POC, donc y'a certainement des choses à faire pour que ça marche mieux.
[^] # Re: Typage
Posté par _kaos_ . En réponse au message débutant java : opérations de base sur les listes. Évalué à 1.
Salut,
Comme tu as le courage de répondre, j'ai complété un peu les choses, modifié deux ou trois trucs, pour une nouvelle version.
L'exo se complexifie, on ne fait plus de print (ça, c'est un peu trop facile), mais une moyenne (ça pourrait être du max, du min, peu importe).
J'ai suprimmé mon extends, comme ça, il n'y a que ce que j'expose qui est dispo. Dans la version précédente, j'avais commencé à préparer le boulot, tu vois que maintenant j'ai des méthodes avec varargs et du coup c'est assez pratique pour faire de l'ajout en masse.
Voilà, comme tu m'a donné ta version des choses, j'ai pris un peu plus de temps pour t'en donner encore une autre ;)
Pas sûr qu'elle te plaise toujours plus. Et c'est du POC, donc y'a certainement des choses à faire pour que ça marche mieux.
Matricule 23415