passer une méthode en paramètre ? - Java - Programmation
Marsh Posté le 07-03-2003 à 16:05:08
Tu peux pas passer de méthode directement, il faut passer par une classe
Une moyen propre de le faire est de créer une interface, contenant la méthode à implanter
Ensuite, tu fais une classes implémentant l'interface, et tu passes cette classe en paramètre
Marsh Posté le 07-03-2003 à 16:14:05
noldor a écrit : Tu peux pas passer de méthode directement, il faut passer par une classe |
Hé ouais, ça serait pas très "Objet" de passer juste une méthode en paramètre.
Marsh Posté le 07-03-2003 à 16:17:18
noldor a écrit : Tu peux pas passer de méthode directement, il faut passer par une classe |
ie un functor
et le Design Pattern associé: Stratégie
Marsh Posté le 07-03-2003 à 16:23:11
El_gringo a écrit : |
ça serait quand même pratique parfois
Marsh Posté le 07-03-2003 à 16:53:14
noldor a écrit : ça serait quand même pratique parfois |
tout à fait
je vous donne mon exemple...
j'ai un panel qui gère les 3 boutons de souris différemment
plutôt que de créer 3 popup, je voudrais utiliser le même (car ils contiennent les même données) mais faire en sorte qu'ils appellent 3 méthodes différentes.
une autre solution aurait été de créer un popup bloquant (comme un JOptionPane.swhoMessageDialog), mais j'ai pas trouvé comment faire
merci de vos réponses
Marsh Posté le 07-03-2003 à 16:57:44
On peut passer des méthodes en paramètres. La solution de l'interface est evidement beaucoup plus adaptée la plupart du temps, mais c'est possible.
Code :
|
Edit: erreur de copié coller
Marsh Posté le 07-03-2003 à 17:04:06
lorill a écrit : On peut passer des méthodes en paramètres. La solution de l'interface est evidement beaucoup plus adaptée la plupart du temps, mais c'est possible.
|
Ah en effet, j'avais pas pensé à ce genre de manip !
Mais c'est quand même bien lourd par rapport à un pointeur de fonction en C (OK, je compare ce qui n'est pas comparable)
Marsh Posté le 07-03-2003 à 17:08:36
Justement, est-ce vraiment lent ?
c'est pas trop lourd à votre avis de faire cette manip à chaque fois que je lance le popup ? (ça peut être très fréquent)
vaut-il vraiment mieux implémenter 3 popup différents ?
y'a-t-il une méthode pour faire un popup bloquant ? ça simplifierait pas mal...
Marsh Posté le 07-03-2003 à 17:48:50
Pourquoi tu ne pourrais pas définir une interface définissant le prototype de ta fameuse fonction, et 3 classes qui définissent les 3 implémentations différentes de ta fonction ? Tu éviterais tout ce code réflexif, et ce serait beaucoup plus efficace tout en était beaucoup plus clair au niveau de ton source...
Marsh Posté le 07-03-2003 à 17:51:08
BifaceMcLeOD a écrit : Pourquoi tu ne pourrais pas définir une interface définissant le prototype de ta fameuse fonction, et 3 classes qui définissent les 3 implémentations différentes de ta fonction ? Tu éviterais tout ce code réflexif, et ce serait beaucoup plus efficace tout en était beaucoup plus clair au niveau de ton source... |
je sais, je pourrais tout aussi bien dériver 3 fois JMenuItem... Mais bon... j'ai trouvé une solution, peut être pas très "objet", mais plus rapide...
Marsh Posté le 07-03-2003 à 17:52:53
noldor a écrit : ça serait quand même pratique parfois |
C'est surtout une vraie expression lambda qui serait pratique, parce que écrire une méthode pour un boute de code d'une ligne qui sera utilisé une fois c'est un peu lourd.
Marsh Posté le 07-03-2003 à 18:07:19
mais ca coute rien une interface, et c'est la "bonne" façon de faire ce que tu veux !
Tu peux faire une interface non-public (dans le même fichier) ...
Marsh Posté le 07-03-2003 à 19:00:02
Predicator a écrit : |
Pour l'histoire de passage de méthode, j'ai pas grand chose a rajouter ...
En revanche pour ton pb de popup bloquant, la sol que j'avais trouve etait de faire un JDialod undecorated modal ...
Marsh Posté le 07-03-2003 à 16:02:48
est-ce possible en java ?
je voudrais faire quelque chose du genre
bien sûr si je cherche ça c'est pour un truc plus complexe que ce que je vous ai donné, mais c'est le principe
merci