Je cherche un moyen de transmettre un paramètre par référence. Je comprends que Java ne transmet pas les méthodes en tant que paramètres, mais j'aimerais trouver une alternative.
On m'a dit que les interfaces sont l'alternative au passage de méthodes en tant que paramètres, mais je ne comprends pas comment une interface peut agir comme une méthode par référence. Si je comprends bien, une interface est simplement un ensemble abstrait de méthodes qui ne sont pas définies. Je ne veux pas envoyer une interface qui doit être définie à chaque fois parce que plusieurs méthodes différentes pourraient appeler la même méthode avec les mêmes paramètres.
Ce que je voudrais accomplir est quelque chose de similaire à ceci :
public void setAllComponents(Component[] myComponentArray, Method myMethod) {
for (Component leaf : myComponentArray) {
if (leaf instanceof Container) { //recursive call if Container
Container node = (Container) leaf;
setAllComponents(node.getComponents(), myMethod);
} //end if node
myMethod(leaf);
} //end looping through components
}
invoqués tels que :
setAllComponents(this.getComponents(), changeColor());
setAllComponents(this.getComponents(), changeSize());
Merci d'avance, Mac
2 votes
Pour l'instant, ma solution consiste à passer un paramètre supplémentaire et à utiliser un switch case à l'intérieur pour sélectionner la méthode appropriée. Cependant, cette solution ne se prête pas à la réutilisation du code.
2 votes
Voir aussi cette réponse stackoverflow.com/a/22933032/1010868 pour une question similaire
3 votes
Voir aussi java-delegates , whats-the-nearest-substitute-for-a-function-pointer-in-java