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

Pointeur sur méthode ?

5 réponses
Avatar
tsalm
Bonjour,

Je voudrais savoir s'il est possible en Java d'utiliser des pointeurs
sur m=E9thode.

D'avance merci
Tsalm

5 réponses

Avatar
Nicolas Le Scouarnec
Je voudrais savoir s'il est possible en Java d'utiliser des pointeurs
sur méthode.


Tu peux faire ca en créant un objet anonyme qui encapsule ta méthode...
Pour spécifier le type de ta méthode, tu crée une interface...

Interface MonOperation {
public double calculer(double, double);
}

Ensuite, tu peux créer des objets anonymes:


public static void main (String[] args){

MonOperation max = new MonOperation(){
public double calculer(double a, double b){
return (a > b ? a : b);
}
};

MonOperation min = new MonOperation(){
public double calculer(double a, double b){
return (a > b ? b : a);
}
};

MonOperation mean = new MonOperation(){
public double calculer(double a, double b){
return (a + b )/2;
}
};


MonOperation tab = new MonOperation[2];
tab[0]=max;tab[1]=min;tab[2]=mean;

double v1=3.0;
double v2=4.0;

for(int i=0;i<tab.length;i++){
System.out.println("Résultat "+i+" : "+tab[i].calculer(v1,v2));
}
}


Ok, c'est un peu verbeux, mais bon...


--
Nicolas Le Scouarnec

Avatar
Hervé AGNOUX
tsalm wrote:

Bonjour,

Je voudrais savoir s'il est possible en Java d'utiliser des pointeurs
sur méthode.



En plus de la solution donnée par tsalm, qui est très utilisée, il y a :

- la classe java.lang.reflect.Method
- la classe java.beans.Expression
- la classe java.beans.Statement
- la classe java.beans.EventHandler
- éventuellement peut être dans une perspective plus éloignée mais quand
même éventuellement néanmoins intéressante si besoin est la classe
java.lang.reflect.Proxy.

Je te laisse découvrir ces outils, et si tu veux d'autres infos sur l'un
d'eux...

Et note aussi qu'il n'y a PAS DE POINTEURS en java.

(on dit "référence d'objet").


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
tsalm

tsalm wrote:

Bonjour,

Je voudrais savoir s'il est possible en Java d'utiliser des pointeurs
sur méthode.



- la classe java.lang.reflect.Method
- la classe java.beans.Expression
- la classe java.beans.Statement
- la classe java.beans.EventHandler
- éventuellement peut être dans une perspective plus éloignée mai s quand
même éventuellement néanmoins intéressante si besoin est la classe
java.lang.reflect.Proxy.


Dans mon cas, je ne connais en fait pas les méthode qui vont être
invoquées.
je vais voir du côté de la classe Method.
Merci à vos deux.
TSalm


Avatar
thomas_escolan
Pour tout comprendre des "proxies" en java :
http://java.sun.com/developer/Books/javaprogramming/reflection/javareflecti onexcerpt.pdf

Mais c'est vrai que ça serait plus propre avec une interface...
Avatar
thomas_escolan
Et sur la réflexion, de manière plus générale (c'est pas forcément
évident, "from scratch") :

http://today.java.net/today/2004/05/05/HardcoreJava.pdf