Passage de fonction en argument
Résolu
dadita
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
dadita Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
dadita Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
sous matlab on peut utiliser des pointeurs (ou adresses) vers une fonction pour permettre le passage de fonction en argument, ces pointeurs sont appelés des Handles
y a t'il un équivalent des handles de matlab en java?
par exemple:
ptr=@sin
transformation(ptr,0,pi/2,100)
comment faire ça en java?
Merci d'avance
sous matlab on peut utiliser des pointeurs (ou adresses) vers une fonction pour permettre le passage de fonction en argument, ces pointeurs sont appelés des Handles
y a t'il un équivalent des handles de matlab en java?
par exemple:
ptr=@sin
transformation(ptr,0,pi/2,100)
comment faire ça en java?
Merci d'avance
A voir également:
- Passage de fonction en argument
- Fonction si et - Guide
- Passage qwerty azerty - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Test passage windows 11 - Guide
1 réponse
En Java il n'y a pas de pointeur, pour la simple et bonne raison que l'on n'accède pas directement à la mémoire de l'ordinateur car celle-ci est gérée par la machine virtuelle. La manipulation des objets se fait par référence, ces références sont parfois appelées "handle" mais je trouve que c'est un abus de langage.
Pour faire ce que tu veux en Java il faudrait faire très différemment, on appelle ça de l'introspection, c'est à dire qu'on va chercher un objet qui correspond à une classes, puis on applique des méthodes sur l'objet Class pour récupérer un objet Method qui correspond à la méthode que l'on souhaite manipuler.
Par exemple voici une simple récupération des méthodes Math.sinus et Math.cosinus auxquelles on passe en paramètre la valeur π/2 via la méthode "appel" :
Pour faire ce que tu veux en Java il faudrait faire très différemment, on appelle ça de l'introspection, c'est à dire qu'on va chercher un objet qui correspond à une classes, puis on applique des méthodes sur l'objet Class pour récupérer un objet Method qui correspond à la méthode que l'on souhaite manipuler.
Par exemple voici une simple récupération des méthodes Math.sinus et Math.cosinus auxquelles on passe en paramètre la valeur π/2 via la méthode "appel" :
import java.lang.reflect.Method; public class essai { public static void main(String[] args) throws Exception { Class<?> math = Class.forName("java.lang.Math"); Method sinus = math.getMethod("sin", double.class); Method cosinus = math.getMethod("cos", double.class); double valeur = Math.PI/2; double resultat_sin = appel(sinus,valeur); double resultat_cos = appel(cosinus,valeur); System.out.println(resultat_sin); // 1.0 System.out.println(resultat_cos); // 0.0 } private static double appel(Method methode, double valeur) throws Exception { return (double) methode.invoke(null,valeur); } }La confiance n'exclut pas le contrôle
problème résolu :)