URL: https://alpha.linuxfr.org/forums/programmationjava/posts/siouxerie-en-java Title: Siouxerie en java Authors: Ontologia Date: 2007年05月10日T17:49:50+02:00 Tags: testtag Score: 0 Le gros problème de java, c'est l'impossibilité (parait-il bientôt corrigée) de mettre des fonction annonymes (ou pas) en argument de fonction. Comme j'en avais marre des limitations de Vector, j'ai fait ma classe avec entre autre une méthode public synchronized Vecteur restrict_elt_with_func(E other, String obj, String func) Le but de cette méthode est de restreindre les éléments du vecteur à un élément sur lequel une fonction donnée s'applique. Un exemple vaut mieux qu'un long discours, j'aimerai faire : monvecteur.restrict_elt_with_func("toto", "String", "startsWith") de sorte que ça me crache toutes les chaînes du Vecteur commençant par "toto" donc dans le code suivant public synchronized Vecteur restrict_elt_with_func(E other, String obj, String func) { Vecteur res = new Vecteur(); if (elementData != null) for (int i=0 ; i<elementData.length ; i++) { E self_elt; self_elt = (E)elementData[i]; if (self_elt.equals(other)) res.add(self_elt); } return res; £spaces£ £/spaces£} Faut que je remplace le equals, par une invoquation de la méthode donnée en argument. J'ai bien ce code là £spaces£ £/spaces£private Object lancerMethode(Object obj, Object[] args, String nomMethode) throws Exception £spaces£ £/spaces£{ Class[] paramTypes = null; if(args != null) { paramTypes = new Class[args.length]; for(int i=0;i<args.length;++i) { paramTypes[i] = args[i].getClass(); } } Method m = obj.getClass().getMethod(nomMethode,paramTypes); return m.invoke(obj,args); £spaces£ £/spaces£} Le problème, c'est que je sais pas comment invoquer le receveur, dans mon cas, ie lui faire exécuter dans mon exemple : self_elt.startsWith(other) Une idée ?

AltStyle によって変換されたページ (->オリジナル) /