Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Quel equivalent en Java pour remplacer les pointeurs de fonction du C?

4 réponses
Avatar
Funtix
Salut,
je commence tout juste a écrire mon premier programme en java. Et deja
je me heurte à un probleme! Comment fait on en java pour faire pareil
qu'en C avec les pointeurs de fonctions.
Pour ce que j'ai a faire il ne s'agit pas de gerer des evenements a la
maniere des callbacks.

Je voudrais associer dans une table (HashMap) un nom commande à une
action. En d'autres termes, associer un string à une methode d'un objet.

Comment je peux faire?

merci pour l'aide
bye+

4 réponses

Avatar
Xavier Tarrago
Il y a deux approches :
1 - Simple et Objet. Faire des objets Action.
public interface Action { public void doIt();}
public class DoSomething implements Action {
private Target aTarget;
DoSomething( Target aTarget) { this.aTarget=aTarget;}
public void doIt() { aTarget.doSomething();}
}
myMap.put("really do something", new DoSomething(aTarget));
((Action)myMap.get("really do something")).doIt();

2 - Use reflexion
see http://java.sun.com/docs/books/tutorial/reflect/index.html &
http://java.sun.com/docs/books/tutorial/reflect/object/invoke.html

"Funtix" a écrit dans le message de
news:401841eb$0$19294$
Salut,
je commence tout juste a écrire mon premier programme en java. Et deja
je me heurte à un probleme! Comment fait on en java pour faire pareil
qu'en C avec les pointeurs de fonctions.
Pour ce que j'ai a faire il ne s'agit pas de gerer des evenements a la
maniere des callbacks.

Je voudrais associer dans une table (HashMap) un nom commande à une
action. En d'autres termes, associer un string à une methode d'un objet.

Comment je peux faire?

merci pour l'aide
bye+


Avatar
TestMan
Plutôt que de rentrer dans la réflexion ou utiliser des classes anonymes
... jettes un oeil sur :

http://java.sun.com/j2se/1.4.2/docs/api/java/beans/EventHandler.html

A+

TM

Funtix wrote:

Salut,
je commence tout juste a écrire mon premier programme en java. Et deja
je me heurte à un probleme! Comment fait on en java pour faire pareil
qu'en C avec les pointeurs de fonctions.
Pour ce que j'ai a faire il ne s'agit pas de gerer des evenements a la
maniere des callbacks.

Je voudrais associer dans une table (HashMap) un nom commande à une
action. En d'autres termes, associer un string à une methode d'un objet.

Comment je peux faire?

merci pour l'aide
bye+


Avatar
Funtix
Xavier Tarrago wrote:
Il y a deux approches :
1 - Simple et Objet. Faire des objets Action.
public interface Action { public void doIt();}
public class DoSomething implements Action {
private Target aTarget;
DoSomething( Target aTarget) { this.aTarget=aTarget;}
public void doIt() { aTarget.doSomething();}
}
myMap.put("really do something", new DoSomething(aTarget));
((Action)myMap.get("really do something")).doIt();


Comment on fait si on a besoin de passer des arguments qui peuvent etre
de type different pour chaque methode?

Avatar
oliv
Funtix wrote:
Comment on fait si on a besoin de passer des arguments qui peuvent etre
de type different pour chaque methode?


Un tableau ou un Vector, on récupère les arguments et on traite les
cas si nécessaire.

doIt(Vector args) {...}

Sinon, plus formalisé et plus lourd, la réflection/introspection
éventuellement.

--
oliv