# Interface ExecutableElement

All Superinterfaces:
  `AnnotatedConstruct, Element, Parameterizable`

public interface ExecutableElement extends Element, Parameterizable
Represents a method, constructor, or initializer (static or instance) of a class or interface, including annotation interface elements. Annotation interface elements are methods restricted to have no formal parameters, no type parameters, and no `throws` clause, among other restrictions; see JLS 9.6.1 for details.

Since:
  1.6
See Also:
  - `ExecutableType`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `TypeMirror`
  `asType()`
  Returns the executable type defined by this executable element.
  `AnnotationValue`
  `getDefaultValue()`
  Returns the default value if this executable is an annotation interface element.
  `Element`
  `getEnclosingElement()`
  Returns the class or interface defining the executable.
  `List<? extends VariableElement>`
  `getParameters()`
  Returns the formal parameters of this executable.
  `TypeMirror`
  `getReceiverType()`
  Returns the receiver type of this executable, or `NoType` with kind `NONE` if the executable has no receiver type.
  `TypeMirror`
  `getReturnType()`
  Returns the return type of this executable.
  `Name`
  `getSimpleName()`
  Returns the simple name of a constructor, method, or initializer.
  `List<? extends TypeMirror>`
  `getThrownTypes()`
  Returns the exceptions and other throwables listed in this method or constructor's `throws` clause in declaration order.
  `List<? extends TypeParameterElement>`
  `getTypeParameters()`
  Returns the formal type parameters of this executable in declaration order.
  `boolean`
  `isDefault()`
  Returns `true` if this method is a default method and returns `false` otherwise.
  `boolean`
  `isVarArgs()`
  Returns `true` if this method or constructor accepts a variable number of arguments and returns `false` otherwise.

  ### Methods declared in interface Element

  `accept, equals, getAnnotation, getAnnotationMirrors, getAnnotationsByType, getEnclosedElements, getKind, getModifiers, hashCode`

- ## Method Details

  - ### asType

    TypeMirror asType()
    Returns the executable type defined by this executable element.
    Specified by:
      `asType` in interface `Element`
    Returns:
      the executable type defined by this executable element
    See Also:
      - `ExecutableType`

  - ### getTypeParameters

    List<? extends TypeParameterElement> getTypeParameters()
    Returns the formal type parameters of this executable in declaration order.
    Specified by:
      `getTypeParameters` in interface `Parameterizable`
    Returns:
      the formal type parameters, or an empty list if there are none

  - ### getReturnType

    TypeMirror getReturnType()
    Returns the return type of this executable. Returns a `NoType` with kind `VOID` if this executable is not a method, or is a method that does not return a value.
    Returns:
      the return type of this executable

  - ### getParameters

    List<? extends VariableElement> getParameters()
    Returns the formal parameters of this executable. They are returned in declaration order.
    Returns:
      the formal parameters, or an empty list if there are none

  - ### getReceiverType

    TypeMirror getReceiverType()
    Returns the receiver type of this executable, or `NoType` with kind `NONE` if the executable has no receiver type. An executable which is an instance method, or a constructor of an inner class, has a receiver type derived from the declaring type. An executable which is a static method, or a constructor of a non-inner class, or an initializer (static or instance), has no receiver type.

    The receiver parameter is a syntactic device added to the language for the purpose of hosting annotations. Even when source code is used as the basis for creating an executable, if a receiver parameter is not present in the source code, an implementation may elect to return a `NoType` object even in cases where a receiver type is nominally defined on the executable in question, such as an instance method. When a receiver parameter is present and hosting annotations, a suitably annotated receiver type is returned.

    Returns:
      the receiver type of this executable
    See Java Language Specification:
      8.4 Method Declarations
      8.4.1 Formal Parameters
      8.8 Constructor Declarations
    Since:
      1.8

  - ### isVarArgs

    boolean isVarArgs()
    Returns `true` if this method or constructor accepts a variable number of arguments and returns `false` otherwise.
    Returns:
      `true` if this method or constructor accepts a variable number of arguments and returns `false` otherwise

  - ### isDefault

    boolean isDefault()
    Returns `true` if this method is a default method and returns `false` otherwise.
    Returns:
      `true` if this method is a default method and returns `false` otherwise
    Since:
      1.8

  - ### getThrownTypes

    List<? extends TypeMirror> getThrownTypes()
    Returns the exceptions and other throwables listed in this method or constructor's `throws` clause in declaration order.
    Returns:
      the exceptions and other throwables listed in the `throws` clause, or an empty list if there are none

  - ### getDefaultValue

    AnnotationValue getDefaultValue()
    Returns the default value if this executable is an annotation interface element. Returns `null` if this method is not an annotation interface element, or if it is an annotation interface element with no default value.
    Returns:
      the default value, or `null` if none

  - ### getEnclosingElement

    Element getEnclosingElement()
    Returns the class or interface defining the executable.
    Specified by:
      `getEnclosingElement` in interface `Element`
    Returns:
      the class or interface defining the executable
    See Also:
      - `Elements.getPackageOf(Element)`

  - ### getSimpleName

    Name getSimpleName()
    Returns the simple name of a constructor, method, or initializer. For a constructor, the name `"<init>"` is returned, for a static initializer, the name `"<clinit>"` is returned, and for an anonymous class or instance initializer, an empty name is returned.
    Specified by:
      `getSimpleName` in interface `Element`
    Returns:
      the simple name of a constructor, method, or initializer
    See Also:
      - `PackageElement.getSimpleName()`
      - `getSimpleName()`
      - `TypeElement.getSimpleName()`
      - `VariableElement.getSimpleName()`
      - `ModuleElement.getSimpleName()`
      - `RecordComponentElement.getSimpleName()`