# Enum Class ElementKind

java.lang.Object
java.lang.Enum<ElementKind>
javax.lang.model.element.ElementKind

All Implemented Interfaces:
  `Serializable, Comparable<ElementKind>, Constable`

public enum ElementKind extends Enum<ElementKind>
The `kind` of an element.

Note that it is possible additional element kinds will be added to accommodate new, currently unknown, language structures added to future versions of the Java programming language.

Since:
  1.6
See Also:
  - `Element`

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class Enum

  `Enum.EnumDesc<E>`
  Modifier and Type
  Class
  Description
  `static final class`
  `Enum.EnumDesc<E extends Enum<E>>`
  A nominal descriptor for an `enum` constant.

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `ANNOTATION_TYPE`
  An annotation interface.
  `BINDING_VARIABLE`
  A binding variable in a pattern.
  `CLASS`
  A class not described by a more specific kind (like `ENUM` or `RECORD`).
  `CONSTRUCTOR`
  A constructor.
  `ENUM`
  An enum class.
  `ENUM_CONSTANT`
  An enum constant.
  `EXCEPTION_PARAMETER`
  A parameter of an exception handler.
  `FIELD`
  A field not described by a more specific kind (like `ENUM_CONSTANT`).
  `INSTANCE_INIT`
  An instance initializer.
  `INTERFACE`
  An interface not described by a more specific kind (like `ANNOTATION_TYPE`).
  `LOCAL_VARIABLE`
  A local variable.
  `METHOD`
  A method.
  `MODULE`
  A module.
  `OTHER`
  An implementation-reserved element.
  `PACKAGE`
  A package.
  `PARAMETER`
  A parameter of a method or constructor.
  `RECORD`
  A record class.
  `RECORD_COMPONENT`
  A record component of a `record`.
  `RESOURCE_VARIABLE`
  A resource variable.
  `STATIC_INIT`
  A static initializer.
  `TYPE_PARAMETER`
  A type parameter.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isClass()`
  Returns `true` if this is a kind of class: either `CLASS` or `ENUM` or `RECORD`.
  `boolean`
  `isDeclaredType()`
  Returns `true` if this is a kind of declared type, a class or an interface, and `false` otherwise.
  `boolean`
  `isExecutable()`
  Returns `true` if this is a kind of executable: either `METHOD` or `CONSTRUCTOR` or `STATIC_INIT` or `INSTANCE_INIT`.
  `boolean`
  `isField()`
  Returns `true` if this is a kind of field: either `FIELD` or `ENUM_CONSTANT`.
  `boolean`
  `isInitializer()`
  Returns `true` if this is a kind of initializer: either `STATIC_INIT` or `INSTANCE_INIT`.
  `boolean`
  `isInterface()`
  Returns `true` if this is a kind of interface: either `INTERFACE` or `ANNOTATION_TYPE`.
  `boolean`
  `isVariable()`
  Returns `true` if this is a kind of variable: including `ENUM_CONSTANT`, `FIELD`, `PARAMETER`, `LOCAL_VARIABLE`, `EXCEPTION_PARAMETER`, `RESOURCE_VARIABLE`, and `BINDING_VARIABLE`.
  `static ElementKind`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static ElementKind[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### Methods declared in class Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`
  Modifier and Type
  Method
  Description
  `protected final Object`
  `clone()`
  Throws CloneNotSupportedException.
  `final int`
  `compareTo(ElementKind o)`
  Compares this enum with the specified object for order.
  `final Optional<Enum.EnumDesc<ElementKind>>`
  `describeConstable()`
  Returns an enum descriptor `EnumDesc` for this instance, if one can be constructed, or an empty `Optional` if one cannot be.
  `final boolean`
  `equals(Object other)`
  Returns true if the specified object is equal to this enum constant.
  `protected final void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization has been deprecated for removal.
  `final Class<ElementKind>`
  `getDeclaringClass()`
  Returns the Class object corresponding to this enum constant's enum type.
  `final int`
  `hashCode()`
  Returns a hash code for this enum constant.
  `final String`
  `name()`
  Returns the name of this enum constant, exactly as declared in its enum declaration.
  `final int`
  `ordinal()`
  Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero).
  `String`
  `toString()`
  Returns the name of this enum constant, as contained in the declaration.
  `static <T extends Enum<T>>
  T`
  `valueOf(Class<T> enumClass, String name)`
  Returns the enum constant of the specified enum class with the specified name.

  ### Methods declared in class Object

  `getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Enum Constant Details

  - ### PACKAGE

    public static final ElementKind PACKAGE
    A package.

  - ### ENUM

    public static final ElementKind ENUM
    An enum class.

  - ### CLASS

    public static final ElementKind CLASS
    A class not described by a more specific kind (like `ENUM` or `RECORD`).

  - ### ANNOTATION_TYPE

    public static final ElementKind ANNOTATION_TYPE
    An annotation interface. (Formerly known as an annotation type.)

  - ### INTERFACE

    public static final ElementKind INTERFACE
    An interface not described by a more specific kind (like `ANNOTATION_TYPE`).

  - ### ENUM_CONSTANT

    public static final ElementKind ENUM_CONSTANT
    An enum constant.

  - ### FIELD

    public static final ElementKind FIELD
    A field not described by a more specific kind (like `ENUM_CONSTANT`).

  - ### PARAMETER

    public static final ElementKind PARAMETER
    A parameter of a method or constructor.

  - ### LOCAL_VARIABLE

    public static final ElementKind LOCAL_VARIABLE
    A local variable.

  - ### EXCEPTION_PARAMETER

    public static final ElementKind EXCEPTION_PARAMETER
    A parameter of an exception handler.

  - ### METHOD

    public static final ElementKind METHOD
    A method.

  - ### CONSTRUCTOR

    public static final ElementKind CONSTRUCTOR
    A constructor.

  - ### STATIC_INIT

    public static final ElementKind STATIC_INIT
    A static initializer.

  - ### INSTANCE_INIT

    public static final ElementKind INSTANCE_INIT
    An instance initializer.

  - ### TYPE_PARAMETER

    public static final ElementKind TYPE_PARAMETER
    A type parameter.

  - ### OTHER

    public static final ElementKind OTHER
    An implementation-reserved element. This is not the element you are looking for.

  - ### RESOURCE_VARIABLE

    public static final ElementKind RESOURCE_VARIABLE
    A resource variable.
    Since:
      1.7

  - ### MODULE

    public static final ElementKind MODULE
    A module.
    Since:
      9

  - ### RECORD

    public static final ElementKind RECORD
    A record class.
    Since:
      16

  - ### RECORD_COMPONENT

    public static final ElementKind RECORD_COMPONENT
    A record component of a `record`.
    Since:
      16

  - ### BINDING_VARIABLE

    public static final ElementKind BINDING_VARIABLE
    A binding variable in a pattern.
    Since:
      16

- ## Method Details

  - ### values

    public static ElementKind[] values()
    Returns an array containing the constants of this enum class, in the order they are declared.
    Returns:
      an array containing the constants of this enum class, in the order they are declared

  - ### valueOf

    public static ElementKind valueOf(String name)
    Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
    Parameters:
      `name` - the name of the enum constant to be returned.
    Returns:
      the enum constant with the specified name
    Throws:
      `IllegalArgumentException` - if this enum class has no constant with the specified name
      `NullPointerException` - if the argument is null

  - ### isClass

    public boolean isClass()
    Returns `true` if this is a kind of class: either `CLASS` or `ENUM` or `RECORD`.
    Returns:
      `true` if this is a kind of class

  - ### isInterface

    public boolean isInterface()
    Returns `true` if this is a kind of interface: either `INTERFACE` or `ANNOTATION_TYPE`.
    Returns:
      `true` if this is a kind of interface

  - ### isDeclaredType

    public boolean isDeclaredType()
    Returns `true` if this is a kind of declared type, a class or an interface, and `false` otherwise.
    Returns:
      `true` if this is a kind of declared type, a class or an interface, and `false` otherwise
    Since:
      19

  - ### isField

    public boolean isField()
    Returns `true` if this is a kind of field: either `FIELD` or `ENUM_CONSTANT`.
    Returns:
      `true` if this is a kind of field

  - ### isExecutable

    public boolean isExecutable()
    Returns `true` if this is a kind of executable: either `METHOD` or `CONSTRUCTOR` or `STATIC_INIT` or `INSTANCE_INIT`.
    Returns:
      `true` if this is a kind of executable
    Since:
      19

  - ### isInitializer

    public boolean isInitializer()
    Returns `true` if this is a kind of initializer: either `STATIC_INIT` or `INSTANCE_INIT`.
    Returns:
      `true` if this is a kind of initializer
    Since:
      19

  - ### isVariable

    public boolean isVariable()
    Returns `true` if this is a kind of variable: including `ENUM_CONSTANT`, `FIELD`, `PARAMETER`, `LOCAL_VARIABLE`, `EXCEPTION_PARAMETER`, `RESOURCE_VARIABLE`, and `BINDING_VARIABLE`.
    Returns:
      `true` if this is a kind of variable
    Since:
      19