Forum Programmation.java Siouxerie en java

Posté par .
Étiquettes :
0
10
mai
2007
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;

}




Faut que je remplace le equals, par une invoquation de la méthode donnée en argument.

J'ai bien ce code là





private Object lancerMethode(Object obj, Object[] args, String nomMethode) throws Exception

{

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);

}




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 ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.