You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.5 KiB
116 lines
2.5 KiB
/*
|
|
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
package javax.lang.model.element;
|
|
|
|
/**
|
|
* The <i>nesting kind</i> of a type element.
|
|
* Type elements come in four varieties:
|
|
* top-level, member, local, and anonymous.
|
|
* <i>Nesting kind</i> is a non-standard term used here to denote this
|
|
* classification.
|
|
*
|
|
* <p>Note that it is possible additional nesting kinds will be added
|
|
* in future versions of the platform.
|
|
*
|
|
* <p><b>Example:</b> The classes below are annotated with their nesting kind.
|
|
* <blockquote><pre>
|
|
*
|
|
* 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();
|
|
* }
|
|
* </pre></blockquote>
|
|
*
|
|
* @author Joseph D. Darcy
|
|
* @author Scott Seligman
|
|
* @author Peter von der Ahé
|
|
* @since 1.6
|
|
*/
|
|
public enum NestingKind {
|
|
/**
|
|
* A top-level type, not contained within another type.
|
|
*/
|
|
TOP_LEVEL,
|
|
|
|
/**
|
|
* A type that is a named member of another type.
|
|
*/
|
|
MEMBER,
|
|
|
|
/**
|
|
* A named type declared within a construct other than a type.
|
|
*/
|
|
LOCAL,
|
|
|
|
/**
|
|
* A type without a name.
|
|
*/
|
|
ANONYMOUS;
|
|
|
|
/**
|
|
* Does this constant correspond to a nested type element?
|
|
* A <i>nested</i> type element is any that is not top-level.
|
|
* An <i>inner</i> type element is any nested type element that
|
|
* is not {@linkplain Modifier#STATIC static}.
|
|
* @return whether or not the constant is nested
|
|
*/
|
|
public boolean isNested() {
|
|
return this != TOP_LEVEL;
|
|
}
|
|
}
|