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 ?
# lorem ipsum 0.633115100332643 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 2.
# lorem ipsum 0.5952541107267645 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 6.
[^] # lorem ipsum 0.5037603317794952 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 3.
[^] # Re: Motif de conception « Command »
Posté par Ontologia . Évalué à 2.
Ouais, Javouille, les inconvéniants d'un langage compilé sans les avantages...
Plus constructivement, et pour l'intelligence collective, il faut écrire l'objet comme suit :
interface FonctionBool {
public abstract boolean compare(Object el1, Object el2);
public abstract boolean do_something(Object el);
}
sinon le compilateur nous jette.
Le do_something permet par exemple de faire des map/fold/filter
Exemple le map :
Vecteur map(FonctionBool func) {
Vecteur res = new Vecteur();
if (elementData != null)
for (int i=0 ; i<elementData.length ; i++) {
E self_elt;
self_elt = (E)elementData[i];
func.do_something(self_elt);
}
return res;
}
maliste.map ( new FonctionBoolString() {
boolean do_something(String arg) {
System.out.println(arg);
}
});
Mais c'est surtout pour les fold(gauche|droite) et le filter que c'est intéressant.
En tout cas merci, ça m'a débloqué :)
[^] # lorem ipsum 0.8542796372010183 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 3.
[^] # lorem ipsum 0.01746841056036615 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 3.
[^] # Re: Motif de conception « Command »
Posté par Ontologia . Évalué à 2.
Là je l'enlève, il me dit rien....
[^] # lorem ipsum 0.5886899368732142 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 2.
# lorem ipsum 0.18129048327104233 Dolore molestias recusandae quam
Posté par Anonyme . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.