[jboss-user] [Javassist user questions] - Final fields, paramters and local variables

Coloss do-not-reply at jboss.com
Thu Apr 10 14:47:44 EDT 2008


Hello,

I am using Javassist only since a few weeks and I have tried out to create my own classes at runtime with final fields, function parameters and variables.

The surprising thing was that i wasn't able at all to have this working (for parameters I have found out that Javassist doesn't seem to allow me to specify this kind of propriety. Am I right?).

For local variables and fields the code compiles (thing that is not done with parameters) but the final propriety is not really applied (I am still able to change this variable many times).

Is this a bug or am I doing something wrong?

Compilation fails:

  | CtMethod m = CtMethod.make("private void printString (final String s) 
  | { System.out.print(s); }",newClass);
  | newClass.addMethod(m);
  | 

Code that compiles but doesn't apply the final propriety (LV)

  | CtMethod m = CtMethod.make("private void printString (String s) { 
  | final String prefix = \"> \"; prefix = \">>\"; 
  | System.out.print(prefix + s); }",newClass);
  | newClass.addMethod(m);
  | 

Code that compiles but doesn't apply the final propriety (Fields)

  | CtField field = new CtField(CtClass.intType, "x",newClass);
  | field.setModifiers(Modifier.FINAL);		
  | newClass.addField(field);
  | 
  | CtMethod m = CtMethod.make("private void setX (int x) 
  | { this.x = x; this.x++; }",newClass);
  | newClass.addMethod(m);
  | 


Thanks in advance for the answer.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4143286#4143286

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4143286



More information about the jboss-user mailing list