API Reflection

API Reflection - Java - Programmation

Marsh Posté le 19-05-2005 à 21:51:32    

salut, voici le code:
 

Code :
  1. public class test2{
  2.  int ul = 2;
  3.  public void main(String args[]) {
  4.   try{
  5.    System.out.println(">> ul = " + ul);
  6.    String search = "ul"
  7.    this.getClass().getField(search).set(this, 3);
  8.    System.out.println(">> ul = " + (String) this.getClass().getField(search).get(this));
  9.   }
  10.   catch(Exception e){
  11.    System.out.println("Exception: " + e);
  12.    e.printStackTrace();
  13.   }
  14.  }
  15. }


 
ce que j'aimerais faire c'est, depuis une variable String, récupérer mon entier int et le modifier mais ca n'a pas trop l'air de marcher, il m'affiche meme comme erreur:
 

Code :
  1. set(java.lang.Object,java.lang.Object) in java.lang.reflect.Field cannot be applied to (test2,int)
  2.                          this.getClass().getField("ul" ).set(this, 3);


 
Pourtant je ne vois pas :s j'ai du mal saisir le biz.
 
Si quelqu'un peut m'éclairer :)
 
thx
SHiSo

Reply

Marsh Posté le 19-05-2005 à 21:51:32   

Reply

Marsh Posté le 20-05-2005 à 07:53:42    

j'ai pas trop bien compris mais si tu veux convertir un String en int (mais il faut que ce soit un int valable car je pense que par exemple "10 01" ne passera pas) tu peux essayer un Integer.parseInt(String)

Reply

Marsh Posté le 20-05-2005 à 10:32:38    

t'essaye de faire rentrer un int dans un Object => à moins que tu dois en java1.5 (autoboxing), ca marchera pas ...
 
PS : les conventions de codage java, quoi :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 20-05-2005 à 10:34:20    

faut utiliser les wrapper : int -> Integer
c'est expliqué dans la javadoc si je me souviens bien.
Ca l'est aussi dans n'importe quel tutorial sur l'introspection.
 
Bref, je te conseille de t'autodocumenter un peu ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 20-05-2005 à 13:08:01    

donc c'est bien ce que j'ai dit.

Reply

Marsh Posté le 20-05-2005 à 13:53:39    

tequilla76 a écrit :

donc c'est bien ce que j'ai dit.


non pas vraiment ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 20-05-2005 à 19:01:34    

ah oui t'as raison je ne t'avais pas compris. Mais pourquoi utiliser un wrapper, ce qu'il veut c'est transformer une String en int non?
 
Si oui, il faut donc faire un Integer.parseInt(String)

Reply

Marsh Posté le 20-05-2005 à 19:08:06    

la méthode set de Fields prend en paramètre pour la valeur un Object, pas un int => il faut passer par un Integer comme je l'ai expliqué. Va voir la javadoc ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed