Class Java.LocalClassDeclaration

All Implemented Interfaces:
Java.Annotatable, Java.ClassDeclaration, Java.DocCommentable, Java.Locatable, Java.NamedTypeDeclaration, Java.Scope, Java.TypeDeclaration
Enclosing class:
Java

public static final class Java.LocalClassDeclaration extends Java.NamedClassDeclaration
Representation of a "local class declaration" i.e. a class declaration that appears inside a method body.
  • Constructor Details

  • Method Details

    • getClassName

      public String getClassName()
      Description copied from interface: Java.TypeDeclaration
      Determines the effective class name, e.g. "pkg.Outer$Inner".
      Specified by:
      getClassName in interface Java.TypeDeclaration
    • accept

      @Nullable public <R, EX extends Throwable> R accept(Visitor.TypeDeclarationVisitor<R,EX> visitor) throws EX
      Description copied from interface: Java.TypeDeclaration
      Invokes the "visit...()" method of Visitor.TypeDeclarationVisitor for the concrete Java.TypeDeclaration type.
      Specified by:
      accept in interface Java.TypeDeclaration
      Throws:
      EX
    • 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