Package org.codehaus.janino

# Class Java.MemberClassDeclaration

java.lang.Object
org.codehaus.janino.Java.AbstractTypeDeclaration
org.codehaus.janino.Java.AbstractClassDeclaration
org.codehaus.janino.Java.NamedClassDeclaration
org.codehaus.janino.Java.MemberClassDeclaration

All Implemented Interfaces:
  `Java.Annotatable`, `Java.ClassDeclaration`, `Java.DocCommentable`, `Java.Locatable`, `Java.MemberTypeDeclaration`, `Java.NamedTypeDeclaration`, `Java.Scope`, `Java.TypeBodyDeclaration`, `Java.TypeDeclaration`

Direct Known Subclasses:
  `Java.MemberEnumDeclaration`

Enclosing class:
  `Java`

public static class Java.MemberClassDeclaration extends Java.NamedClassDeclaration implements Java.MemberTypeDeclaration
Representation of a "member class declaration", i.e. a class declaration that appears inside another class or interface declaration.

## Field Summary

### Fields inherited from class org.codehaus.janino.Java.NamedClassDeclaration

`extendedType, implementedTypes, name`

### Fields inherited from class org.codehaus.janino.Java.AbstractClassDeclaration

`constructors, fieldDeclarationsAndInitializers`

### Fields inherited from class org.codehaus.janino.Java.AbstractTypeDeclaration

`anonymousClassCount, localClassCount`

## Constructor Summary

Constructors
Constructor
Description
`MemberClassDeclaration(Location location, String docComment, Java.Modifier[] modifiers, String name, Java.TypeParameter[] typeParameters, Java.Type extendedType, Java.Type[] implementedTypes)`

## Method Summary

Modifier and Type
Method
Description
`<R, EX extends Throwable>
R`
`accept(Visitor.TypeBodyDeclarationVisitor<R,EX> visitor)`
Invokes the "`visit...()`" method of `Visitor.TypeBodyDeclarationVisitor` for the concrete `Java.TypeBodyDeclaration` type.
`<R, EX extends Throwable>
R`
`accept(Visitor.TypeDeclarationVisitor<R,EX> visitor)`
Invokes the "`visit...()`" method of `Visitor.TypeDeclarationVisitor` for the concrete `Java.TypeDeclaration` type.
`void`
`defineSyntheticField(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.
`Access`
`getAccess()`
`String`
`getClassName()`
Determines the effective class name, e.g.
`Java.TypeDeclaration`
`getDeclaringType()`
`boolean`
`isStatic()`
`void`
`setDeclaringType(Java.TypeDeclaration declaringType)`
Sets the type declaration that this declaration belongs to.

### Methods inherited from class org.codehaus.janino.Java.NamedClassDeclaration

`getDocComment, getName, hasDeprecatedDocTag, isAbstract, isFinal, isStrictfp, toString`

### Methods inherited from class org.codehaus.janino.Java.AbstractClassDeclaration

`addConstructor, addFieldDeclaration, addFieldDeclarationOrInitializer, addInitializer, defineSyntheticField, getSyntheticFields, getVariableDeclaratorsAndInitializers`

### Methods inherited from class org.codehaus.janino.Java.AbstractTypeDeclaration

`addDeclaredMethod, addMemberTypeDeclaration, createAnonymousClassName, createLocalTypeName, getAnnotations, getEnclosingScope, getLocation, getMemberTypeDeclaration, getMemberTypeDeclarations, getMethodDeclaration, getMethodDeclarations, getModifiers, getOptionalTypeParameters, invalidateMethodCaches, setEnclosingScope, throwCompileException`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### 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.NamedTypeDeclaration

`getName, getOptionalTypeParameters`

### Methods inherited from interface org.codehaus.janino.Java.Scope

`getEnclosingScope`

### Methods inherited from interface org.codehaus.janino.Java.TypeBodyDeclaration

`getModifiers`

### Methods inherited from interface org.codehaus.janino.Java.TypeDeclaration

`createAnonymousClassName, createLocalTypeName, getMemberTypeDeclaration, getMemberTypeDeclarations, getMethodDeclaration, getMethodDeclarations`

## Constructor Details

### MemberClassDeclaration

public MemberClassDeclaration(Location location, @Nullable String docComment, Java.Modifier[] modifiers, String name, @Nullable Java.TypeParameter[] typeParameters, @Nullable Java.Type extendedType, Java.Type[] implementedTypes)

## Method Details

### getAccess

public Access getAccess()

Specified by:
  `getAccess` in interface `Java.MemberTypeDeclaration`
Returns:
  The accessability declared for this member type

### setDeclaringType

public void setDeclaringType(Java.TypeDeclaration declaringType)
Description copied from interface: `Java.TypeBodyDeclaration`
Sets the type declaration that this declaration belongs to.

Specified by:
  `setDeclaringType` in interface `Java.TypeBodyDeclaration`

### getDeclaringType

public Java.TypeDeclaration getDeclaringType()

Specified by:
  `getDeclaringType` in interface `Java.TypeBodyDeclaration`
Returns:
  The type declaration that this declaration belongs to.

### 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`

### accept

@Nullable public <R, EX extends Throwable> R accept(Visitor.TypeBodyDeclarationVisitor<R,EX> visitor) throws EX
Description copied from interface: `Java.TypeBodyDeclaration`
Invokes the "`visit...()`" method of `Visitor.TypeBodyDeclarationVisitor` for the concrete `Java.TypeBodyDeclaration` type.

Specified by:
  `accept` in interface `Java.TypeBodyDeclaration`
Throws:
  `EX`

### isStatic

public boolean isStatic()

### 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`