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 ArrayType
s 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, EXPORTS_DIRECTIVE, 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, MODULE_DECLARATION, MODULE_MODIFIER, NAME_QUALIFIED_TYPE, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, OPENS_DIRECTIVE, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, PROVIDES_DIRECTIVE, QUALIFIED_NAME, QUALIFIED_TYPE, 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_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, USES_DIRECTIVE, 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, isVar, isWildcardType, resolveBinding
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
public 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, 2018 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.