Quel equivalent en Java pour remplacer les pointeurs de fonction du C?
4 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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+
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" <Funtix@ifrance.com> a écrit dans le message de
news:401841eb$0$19294$626a54ce@news.free.fr...
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.
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+
TestMan
Plutôt que de rentrer dans la réflexion ou utiliser des classes anonymes ... jettes un oeil sur :
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+
Plutôt que de rentrer dans la réflexion ou utiliser des classes anonymes
... jettes un oeil sur :
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.
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+
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?
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?
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?
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
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.