# 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 java.lang.Enum

  `Enum.EnumDesc<E extends Enum<E>>`

- ## 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 java.lang.Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### Methods declared in class java.lang.Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## 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