OVH Cloud OVH Cloud

Comment récupérer la valeur de method.invoke ?

4 réponses
Avatar
JFA
Bonjour.
J'utilise la réflexion pour accéder à une méthode de la classe de myInstance
puis j'invoque cette méthode :
Object myObject = myMethod.invoke(myInstance, null);
Or myMethod retourne normalement un double.
Comment récupérer ce double encapsulé dans myObject ?
Merci

4 réponses

Avatar
nioubi
JFA wrote:
Object myObject = myMethod.invoke(myInstance, null);
Or myMethod retourne normalement un double.
Comment récupérer ce double encapsulé dans myObject ?
Bonjour,

puisque le type effectif est connu a priori, on peut caster puis
prendre la valeur en type primitif :

double result = ((Double)myObject).doubleValue();

Dans d'autres cas, si le type retourné peut varier selon l'appel, on
pourrait sans doute tester par instanceof.

Avatar
Laurent Bossavit
Or myMethod retourne normalement un double.
Comment récupérer ce double encapsulé dans myObject ?


Effectuer un "cast" ou transtypage:
Double doubleResult = (Double)myObject;

puis récupérer la valeur:
double result = doubleResult.doubleValue();

En Java 1.5, avec le "unboxing" automatique, il devrait être possible
d'exprimer ce mécanisme plus succintement.

Laurent

Avatar
Jocelyn
Salut,
Voici ce que dit la doc de la methode invoke:
...if the value has a primitive type, it is first appropriately wrapped
in an object...
Donc tu dois recuperer un objet Double, grace auquel tu accedes a ta
valeur primitive.
++

Bonjour.
J'utilise la réflexion pour accéder à une méthode de la classe de myInstance
puis j'invoque cette méthode :
Object myObject = myMethod.invoke(myInstance, null);
Or myMethod retourne normalement un double.
Comment récupérer ce double encapsulé dans myObject ?
Merci




Avatar
Nico
Ce que je ferai:

Double monDouble = null;

try
{
monDouble = (Double)myMethod.invoke(myInstance, null);
}
catch (ClassCastException
{
//pb : le retour de la méthode ne peut être casté en Double
}

Attention, j'ai bien mis Double (ie: java.lang.Double) et pas le type
double.


JFA wrote:
Bonjour.
J'utilise la réflexion pour accéder à une méthode de la classe de myInstance
puis j'invoque cette méthode :
Object myObject = myMethod.invoke(myInstance, null);
Or myMethod retourne normalement un double.
Comment récupérer ce double encapsulé dans myObject ?
Merci