[jboss-user] [Javassist user questions] - Unexpected change of CtConstructor parameter type
Juda
do-not-reply at jboss.com
Thu Oct 30 08:57:57 EDT 2008
I've noticed strange CtConstructor's constructor behavior. The following code illustrates the problem:
| import javassist.ClassPool;
| import javassist.CtClass;
| import javassist.CtConstructor;
|
| public class Test {
| Test( Test t ){}
|
| public static void main(String[] args) throws Exception {
| ClassPool pool = ClassPool.getDefault();
|
| CtClass baseCtClass = pool.getCtClass( Test.class.getName() );
| CtClass childCtClass = pool.makeClass( Test.class.getName() + "$$Ex", baseCtClass );
|
| assert baseCtClass.getDeclaredConstructors().length == 1;
| assert baseCtClass.getDeclaredConstructors()[0].getParameterTypes().length == 1;
| assert baseCtClass.getDeclaredConstructors()[0].getParameterTypes()[0].equals( baseCtClass );
|
| assert childCtClass.getDeclaredConstructors().length == 0;
|
| CtConstructor childCtor = new CtConstructor( baseCtClass.getDeclaredConstructors()[0], childCtClass, null );
| childCtor.setBody( "{ super($$); }" );
| childCtClass.addConstructor( childCtor );
|
| assert childCtClass.getDeclaredConstructors().length == 1;
| assert childCtClass.getDeclaredConstructors()[0].getParameterTypes().length == 1;
| assert childCtClass.getDeclaredConstructors()[0].getParameterTypes()[0].equals( baseCtClass );
| //the last assert fails (at least using Sun's jdk 1.6 u 10 / javassist 3.9.0 )
| //for some reason ctor parameter type is Test$$Ex instead of Test
| }
| }
|
Last program assertion fails. The CtConstructor parameter is changed from Test to the Test$$Ex. Is it done on purpose?
Regards
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185706#4185706
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185706
More information about the jboss-user
mailing list