Package org.codehaus.janino
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 Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voiddefineSyntheticField(IClass.IField iField)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.-
Methods inherited from interface org.codehaus.janino.Java.Annotatable
getAnnotations
-
Methods inherited from interface org.codehaus.janino.Java.ClassDeclaration
getSyntheticFields, getVariableDeclaratorsAndInitializers
-
Methods inherited from interface org.codehaus.janino.Java.Locatable
getLocation, throwCompileException
-
Methods inherited from interface org.codehaus.janino.Java.Scope
getEnclosingScope
-
Methods inherited from interface org.codehaus.janino.Java.TypeDeclaration
accept, createAnonymousClassName, createLocalTypeName, getClassName, getMemberTypeDeclaration, getMemberTypeDeclarations, getMethodDeclaration, getMethodDeclarations
-
-
-
-
Method Detail
-
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 fieldthis$0. val$<em>local-variable-name</em>-
(Allowed for local classes and anonymous classes; forbidden for member classes)
Hold copies of
finallocal variables of the defining context.
Notice that these fields are not included in the
IClass.IFieldarray returned byIClass.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
-
-