Interface Java.InnerClassDeclaration

All Superinterfaces:
Java.Annotatable, Java.ClassDeclaration, Java.Locatable, Java.Scope, Java.TypeDeclaration
All Known Implementing Classes:
Java.AnonymousClassDeclaration, Java.LocalClassDeclaration, Java.MemberClassDeclaration, Java.MemberEnumDeclaration
Enclosing class:
Java

static interface Java.InnerClassDeclaration extends Java.ClassDeclaration
Represents the declaration of an inner class, i.e. a class that exists in the context of zero or more "enclosing instances". These are anonymous classes, local classes and member classes.
  • Method Details

    • defineSyntheticField

      void defineSyntheticField(IClass.IField iField) throws CompileException
      Inner classes have zero or more synthetic fields that hold references to their enclosing context:
      this$<em>n</em>
      (Mandatory for non-private non-static member classes; optional for private non-static member classes, local classes in non-static context, and anonymous classes in non-static context; forbidden for static member classes, local classes in static context, and anonymous classes in static context) Holds a reference to the immediately enclosing instance. <em>n</em> is N-1 for the Nth nesting level; e.g. the public non-static member class of a package member class has a synthetic field this$0.
      val$<em>local-variable-name</em>
      (Allowed for local classes and anonymous classes; forbidden for member classes) Hold copies of final local variables of the defining context.

      Notice that these fields are not included in the IClass.IField array returned by IClass.getDeclaredIFields2().

      If a synthetic field with the same name exists already, then it must have the same type and the redefinition is ignored.

      Parameters:
      iField -
      Throws:
      CompileException