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:
dans une autre méthode je récupère l'instance
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;
et je fais
mais au lieu de m'afficher 20@10
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println(o.toString()); //avec le o = instanceC
ca m'affiche Object@1b16e52
je comprend rien![]()
De l'aide svp![]()
Partager