salut,

j'ai crée une classe avec javassist , je lui assigne des méthodes dont toString() et des champs et je crée une instance de cette classe.

Mais quant dans une méthode j'apelle l'instance, et j'essaye d'excuter toString() sur l'objet c'est le toString() par défaut qui est executé , je m'explique:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//on crée la classe 	
ClassPool pool=ClassPool.getDefault();
Loader cl=new Loader(pool);
CtClass ct=pool.makeClass("Object");
//ajout des champs
CtField f=new CtField(double,x,ct );
ct.addField(f,"20");
CtField f=new CtField(double,y,ct );
ct.addField(f,"10");
//ajout des méthodes
ct.addMethod(CtNewMethod.make("public String toString()
	                                      {
		                       return this.x + "@" +this.y;
	                                      }",ct));
ct.writeFile();
c=cl.loadClass("Object");//on crée la Classe
instanceC=c.newInstance();
return instanceC;
dans une autre méthode je récupère l'instance
et je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
System.out.println(o.toString());	//avec le o = instanceC
mais au lieu de m'afficher 20@10
ca m'affiche Object@1b16e52

je comprend rien

De l'aide svp