En Java il n'existe pas de pointeurs sur méthodes, il faut utiliser un objet là où en C/C++ vous utilisiez une fonction.
1ère étape : définiton d'une interface On utilise des objets implémentant une interface commune. Cette interface devra définir le prototype de la fonction à exécuter.
public interface IFonctionpublic void execute(int);
2ème étape : définition de classes implémentant l'interface Ces classes définissent différentes implémentations de la fonction.
public class Fonction implements IFonction {
public void execute(int arg) {
/** Faire ce que l'on aurait fait dans la fonction
* en C/C++
*/
}
}
3ème étape : passage de paramètres et exécution Il ne reste plus qu'à définir une fonction qui prend en paramètre une instance du type de l'interface et de faire appel à la méthode définie dans cette interface.
public void fonction(IFonction uneFonction) {
uneFonction.execute(unint);
}
Un bel exemple d'une telle méthodologie est le système de callback de AWT: au lieu de passer des fonctions comme en C/C++, on passe des instances de classes appelées Listener.
Une alternative intéressante est offerte par Jakarta Comons : l'API Functor. Un functor est une fonction qui peut être manipulée comme un objet, ou un objet repésentant une fonction. Cette API définit trois types de functors : les prédicats (retournent un booléen), les fonctions (retournent un Object) et les procédures (qui ne retournent rien).
|