0N/A/*
797N/A * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
553N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
553N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
553N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
553N/A * or visit www.oracle.com if you need additional information or have any
553N/A * questions.
0N/A */
0N/A
0N/Apackage javax.lang.model.element;
0N/A
0N/A/**
0N/A * The {@code kind} of an element.
0N/A *
0N/A * <p>Note that it is possible additional element kinds will be added
0N/A * to accommodate new, currently unknown, language structures added to
0N/A * future versions of the Java&trade; programming language.
0N/A *
0N/A * @author Joseph D. Darcy
0N/A * @author Scott Seligman
0N/A * @author Peter von der Ah&eacute;
0N/A * @see Element
0N/A * @since 1.6
0N/A */
0N/Apublic enum ElementKind {
0N/A
0N/A /** A package. */
0N/A PACKAGE,
0N/A
0N/A // Declared types
0N/A /** An enum type. */
0N/A ENUM,
0N/A /** A class not described by a more specific kind (like {@code ENUM}). */
0N/A CLASS,
0N/A /** An annotation type. */
0N/A ANNOTATION_TYPE,
0N/A /**
0N/A * An interface not described by a more specific kind (like
0N/A * {@code ANNOTATION_TYPE}).
0N/A */
0N/A INTERFACE,
0N/A
0N/A // Variables
0N/A /** An enum constant. */
0N/A ENUM_CONSTANT,
0N/A /**
0N/A * A field not described by a more specific kind (like
0N/A * {@code ENUM_CONSTANT}).
0N/A */
0N/A FIELD,
0N/A /** A parameter of a method or constructor. */
0N/A PARAMETER,
0N/A /** A local variable. */
0N/A LOCAL_VARIABLE,
0N/A /** A parameter of an exception handler. */
0N/A EXCEPTION_PARAMETER,
0N/A
0N/A // Executables
0N/A /** A method. */
0N/A METHOD,
0N/A /** A constructor. */
0N/A CONSTRUCTOR,
0N/A /** A static initializer. */
0N/A STATIC_INIT,
0N/A /** An instance initializer. */
0N/A INSTANCE_INIT,
0N/A
0N/A /** A type parameter. */
0N/A TYPE_PARAMETER,
0N/A
0N/A /**
0N/A * An implementation-reserved element. This is not the element
0N/A * you are looking for.
0N/A */
593N/A OTHER,
593N/A
593N/A /**
593N/A * A resource variable.
593N/A * @since 1.7
593N/A */
593N/A RESOURCE_VARIABLE;
0N/A
0N/A
0N/A /**
0N/A * Returns {@code true} if this is a kind of class:
0N/A * either {@code CLASS} or {@code ENUM}.
0N/A *
0N/A * @return {@code true} if this is a kind of class
0N/A */
0N/A public boolean isClass() {
0N/A return this == CLASS || this == ENUM;
0N/A }
0N/A
0N/A /**
0N/A * Returns {@code true} if this is a kind of interface:
0N/A * either {@code INTERFACE} or {@code ANNOTATION_TYPE}.
0N/A *
0N/A * @return {@code true} if this is a kind of interface
0N/A */
0N/A public boolean isInterface() {
0N/A return this == INTERFACE || this == ANNOTATION_TYPE;
0N/A }
0N/A
0N/A /**
0N/A * Returns {@code true} if this is a kind of field:
0N/A * either {@code FIELD} or {@code ENUM_CONSTANT}.
0N/A *
0N/A * @return {@code true} if this is a kind of field
0N/A */
0N/A public boolean isField() {
0N/A return this == FIELD || this == ENUM_CONSTANT;
0N/A }
0N/A}