# 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()`