1 Reply Latest reply on Jul 19, 2005 9:26 PM by chiba

    how to avoid adding field to InnerClasses

    panzer_kavalier

      Original Code:
      class ClassA{
      class ClassB{}{
      }
      }
      ------------------------------------------
      Javaassist code :
      CtClass cc = pool.makeClass("ClassA");
      CtField cf = CtField.make("public static String value;", cc);
      cc.addField(cf);
      ------------------------------------------
      when executed, the ClassA.class as following:
      class ClassA{
      public static String value;
      class ClassB{}{
      public static String value;
      }
      }

      --------------------------------------------
      so my question is how to avoid adding the "value" field to ClassB. my execpted result is :
      class ClassA{
      public static String value;
      class ClassB{}{
      }
      }



        • 1. Re: how to avoid adding field to InnerClasses
          chiba

          Your sample code seems weird. At least, the first line:

          CtClass cc = pool.makeClass("ClassA");

          should be:

          CtClass cc = pool.get("ClassA");

          since makeClass() creates a new empty copy of ClassA.
          Can you post a real test program? If the behavior
          you observed is real, it is a bug.