Top Description Fields Constructors Methods
javax.lang.model.element

public final Enum NestingKind

extends Enum<NestingKind>
Class Inheritance

The nesting kind of a type element. Type elements come in four varieties: top-level, member, local, and anonymous. Nesting kind is a non-standard term used here to denote this classification.

Note that it is possible additional nesting kinds will be added in future versions of the platform.

Example: The classes below are annotated with their nesting kind.


import java.lang.annotation.*;
import static java.lang.annotation.RetentionPolicy.*;
import javax.lang.model.element.*;
import static javax.lang.model.element.NestingKind.*;

@Nesting(TOP_LEVEL)
public class NestingExamples {
    @Nesting(MEMBER)
    static class MemberClass1{}

    @Nesting(MEMBER)
    class MemberClass2{}

    public static void main(String... argv) {
        @Nesting(LOCAL)
        class LocalClass{};

        Class<?>[] classes = {
            NestingExamples.class,
            MemberClass1.class,
            MemberClass2.class,
            LocalClass.class
        };

        for(Class<?> clazz : classes) {
            System.out.format("%s is %s%n",
                              clazz.getName(),
                              clazz.getAnnotation(Nesting.class).value());
        }
    }
}

@Retention(RUNTIME)
@interface Nesting {
    NestingKind value();
}
Since
1.6

Field Summary

Modifier and TypeField and Description
public static final NestingKind
ANONYMOUS

A class without a name.

public static final NestingKind
LOCAL

A named class or interface declared within a construct other than a class or interface.

public static final NestingKind
MEMBER

A class or interface that is a named member of another class or interface.

public static final NestingKind
TOP_LEVEL

A top-level class or interface, not contained within another class or interface.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

whether or not the constant is nested
isNested
()

Does this constant correspond to a nested type element?

public static NestingKind
public static NestingKind[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

ANONYMOUSback to summary
public static final NestingKind ANONYMOUS

A class without a name.

Java Language Specification
15.9.5 Anonymous Class Declarations
LOCALback to summary
public static final NestingKind LOCAL

A named class or interface declared within a construct other than a class or interface.

Java Language Specification
14.3 Local Class Declarations
MEMBERback to summary
public static final NestingKind MEMBER

A class or interface that is a named member of another class or interface.

Java Language Specification
8.5 Member Class and Interface Declarations
TOP_LEVELback to summary
public static final NestingKind TOP_LEVEL

A top-level class or interface, not contained within another class or interface.

Constructor Detail

NestingKindback to summary
private NestingKind()

Method Detail

isNestedback to summary
public boolean isNested()

Does this constant correspond to a nested type element? A nested type element is any that is not top-level. More specifically, an inner type element is any nested type element that is not static.

Returns:boolean

whether or not the constant is nested

Java Language Specification
14.3 Local Class Declarations
valueOfback to summary
public static NestingKind valueOf(String name)
valuesback to summary
public static NestingKind[] values()