
javax.lang.model.element.NestingKind Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jx Show documentation
Show all versions of jx Show documentation
JavaX improved library - JDK-8
The newest version!
/*
* Copyright (C) 2021 ZeoFlow SRL
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.lang.model.element;
/**
* 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 jx.lang.model.element.*;
* import static jx.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();
* }
*
*
* @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 nested type element is any that is not top-level.
* An inner 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;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy