public class ArrayType extends Type
In JLS8 and later, array types are represented by a base element type (which cannot be an array type) and a list of dimensions, each of which may have a list of annotations.
ArrayType:
Type Dimension { Dimension }
In JLS4 and before, array types were expressed in a recursive manner, one dimension at a time:
ArrayType:
Type [ ]
This structure became untenable with the advent of type-use annotations,
because in the language model, the base type binds with array dimensions from right to left,
whereas a recursive structure binds from left to right (inside out).
Example:
int @A[] @B[] @C[]
is an @A-array of
int @B[] @C[],
but such a component type is not representable by nested ArrayTypes with contiguous source ranges.
| Modifier and Type | Field and Description |
|---|---|
static ChildPropertyDescriptor |
COMPONENT_TYPE_PROPERTY
Deprecated.
In the JLS8 API, this property is replaced by
ELEMENT_TYPE_PROPERTY and DIMENSIONS_PROPERTY. |
static ChildListPropertyDescriptor |
DIMENSIONS_PROPERTY
The "dimensions" structural property of this node type (element type:
Dimension) (added in JLS8 API). |
static ChildPropertyDescriptor |
ELEMENT_TYPE_PROPERTY
The "elementType" structural property of this node type (child type:
Type) (added in JLS8 API). |
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, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, CREATION_REFERENCE, DIMENSION, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPRESSION_METHOD_REFERENCE, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, INTERSECTION_TYPE, JAVADOC, LABELED_STATEMENT, LAMBDA_EXPRESSION, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, 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_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_METHOD_REFERENCE, TYPE_PARAMETER, UNION_TYPE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE| Modifier and Type | Method and Description |
|---|---|
List |
dimensions()
Returns the live ordered list of dimensions with optional annotations (added in JLS8 API).
|
Type |
getComponentType()
Deprecated.
In the JLS8 API, the recursive structure is not valid.
|
int |
getDimensions()
Returns the number of dimensions in this array type.
|
Type |
getElementType()
Returns the element type of this array type.
|
static List |
propertyDescriptors(int apiLevel)
Returns a list of structural property descriptors for this node type.
|
void |
setComponentType(Type componentType)
Deprecated.
In the JLS8 API, the recursive structure is not valid.
|
void |
setElementType(Type type)
Sets the element type of the array.
|
isAnnotatable, isArrayType, isIntersectionType, isNameQualifiedType, isParameterizedType, isPrimitiveType, isQualifiedType, isSimpleType, isUnionType, isWildcardType, resolveBindingaccept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toStringpublic static final ChildPropertyDescriptor COMPONENT_TYPE_PROPERTY
ELEMENT_TYPE_PROPERTY and DIMENSIONS_PROPERTY.Type).public static final ChildPropertyDescriptor ELEMENT_TYPE_PROPERTY
Type) (added in JLS8 API).
Cannot be an array type.public static final ChildListPropertyDescriptor DIMENSIONS_PROPERTY
Dimension) (added in JLS8 API).public static List propertyDescriptors(int apiLevel)
apiLevel - the API level; one of the
AST.JLS* constantsStructuralPropertyDescriptor)public Type getComponentType()
UnsupportedOperationException - if this operation is used in
an AST later than JLS4dimensions()public void setComponentType(Type componentType)
componentType - the component typeIllegalArgumentException - if:
UnsupportedOperationException - if this operation is used in
an AST later than JLS4public Type getElementType()
In JLS4 and earlier, this is a convenience method that descends a chain of nested array types until it reaches a non-array type.
public void setElementType(Type type)
type - the new typeIllegalArgumentException - if:
UnsupportedOperationException - if this operation is used below JLS8public int getDimensions()
In JLS8 and later, this is a convenience method that returns dimensions().size().
In JLS4 and earlier, this is a convenience method that descends a chain of nested array types until it reaches a non-array type.
public List dimensions()
For the array type to be plausible, the list should contain at least one element.
Dimension)UnsupportedOperationException - if this operation is used below JLS8
Copyright (c) 2000, 2014 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.