# Class AnnotatableType

java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.Type
org.eclipse.jdt.core.dom.AnnotatableType

Direct Known Subclasses:
  `NameQualifiedType, PrimitiveType, QualifiedType, SimpleType, WildcardType`

public abstract class AnnotatableType extends Type
Abstract base class of AST nodes that represent an annotatable type (added in JLS8 API).

Introduced in JLS8, type references that can be annotated are represented by AnnotatableType. For the list of types extending AnnotatableType, see `Type`.

Note that type annotations (`ITypeBinding.getTypeAnnotations()`) that semantically belong to a resolved type reference don't always show up in `annotations()`. Syntactically, type annotations can also be part of an associated declaration node's `modifiers()` list.

Since:
  3.10

## Field Summary

### Fields inherited from class ASTNode

`ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CASE_DEFAULT_EXPRESSION, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EitherOr_MultiPattern, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPORTS_DIRECTIVE, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, GUARDED_PATTERN, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, JAVADOC_REGION, JAVADOC_TEXT_ELEMENT, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, MODULE_DECLARATION, MODULE_MODIFIER, MODULE_QUALIFIED_NAME, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NULL_PATTERN, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, PATTERN_INSTANCEOF_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, RECORD_DECLARATION, RECORD_PATTERN, RECOVERED, REQUIRES_DIRECTIVE, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SUPER_METHOD_REFERENCE, SWITCH_CASE, SWITCH_EXPRESSION, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TAG_PROPERTY, TEXT_BLOCK, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, TYPE_PATTERN, UNION_TYPE, UNNAMED_CLASS, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT`

## Method Summary

Modifier and Type
Method
Description
`List`
`annotations()`
Returns the live ordered list of annotations for this Type node (added in JLS8 API).
`final ChildListPropertyDescriptor`
`getAnnotationsProperty()`
Returns the structural property descriptor for the "annotations" property of this node (element type: `Annotation`) (added in JLS8 API).

### Methods inherited from class Type

`isAnnotatable, isArrayType, isIntersectionType, isNameQualifiedType, isParameterizedType, isPrimitiveType, isQualifiedType, isSimpleType, isUnionType, isVar, isWildcardType, resolveBinding`

### Methods inherited from class ASTNode

`accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString`

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Method Details

### getAnnotationsProperty

public final ChildListPropertyDescriptor getAnnotationsProperty()
Returns the structural property descriptor for the "annotations" property of this node (element type: `Annotation`) (added in JLS8 API).

Returns:
  the property descriptor

### annotations

public List annotations()
Returns the live ordered list of annotations for this Type node (added in JLS8 API).

Note that type annotations (`ITypeBinding.getTypeAnnotations()`) that semantically belong to a resolved type reference don't always show up in this list. Syntactically, type annotations can also be part of an associated declaration node's `modifiers()` list.

Returns:
  the live list of annotations (element type: `Annotation`)
Throws:
  `UnsupportedOperationException` - if this operation is used below JLS8
See Also:
  - `ITypeBinding.getTypeAnnotations()`