Klasse ArrayType
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.
- Seit:
- 2.0
-
Feldübersicht
Modifizierer und TypFeldBeschreibungstatic final ChildPropertyDescriptor
Veraltet.static final ChildListPropertyDescriptor
The "dimensions" structural property of this node type (element type:Dimension
) (added in JLS8 API).static final ChildPropertyDescriptor
The "elementType" structural property of this node type (child type:Type
) (added in JLS8 API).Von Klasse geerbte Felder org.aspectj.org.eclipse.jdt.core.dom.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, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENHANCED_FOR_WITH_RECORD_PATTERN, 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, USES_DIRECTIVE, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE, YIELD_STATEMENT
-
Methodenübersicht
Modifizierer und TypMethodeBeschreibungReturns the live ordered list of dimensions with optional annotations (added in JLS8 API).Veraltet.In the JLS8 API, the recursive structure is not valid.int
Returns the number of dimensions in this array type.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) Veraltet.In the JLS8 API, the recursive structure is not valid.void
setElementType
(Type type) Sets the element type of the array.Von Klasse geerbte Methoden org.aspectj.org.eclipse.jdt.core.dom.Type
isAnnotatable, isArrayType, isIntersectionType, isNameQualifiedType, isParameterizedType, isPrimitiveType, isQualifiedType, isSimpleType, isUnionType, isVar, isWildcardType, resolveBinding
Von Klasse geerbte Methoden org.aspectj.org.eclipse.jdt.core.dom.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
-
Felddetails
-
COMPONENT_TYPE_PROPERTY
Veraltet.In the JLS8 API, this property is replaced byELEMENT_TYPE_PROPERTY
andDIMENSIONS_PROPERTY
.The "componentType" structural property of this node type (child type:Type
).- Seit:
- 3.0
-
ELEMENT_TYPE_PROPERTY
The "elementType" structural property of this node type (child type:Type
) (added in JLS8 API). Cannot be an array type.- Seit:
- 3.10
-
DIMENSIONS_PROPERTY
The "dimensions" structural property of this node type (element type:Dimension
) (added in JLS8 API).- Seit:
- 3.10
-
-
Methodendetails
-
propertyDescriptors
Returns a list of structural property descriptors for this node type. Clients must not modify the result.- Parameter:
apiLevel
- the API level; one of theAST.JLS*
constants- Gibt zurück:
- a list of property descriptors (element type:
StructuralPropertyDescriptor
) - Seit:
- 3.0
-
getComponentType
Veraltet.In the JLS8 API, the recursive structure is not valid.Returns the component type of this array type. The component type may be another array type.- Gibt zurück:
- the component type node
- Löst aus:
UnsupportedOperationException
- if this operation is used in an AST later than JLS4- Siehe auch:
-
setComponentType
Veraltet.In the JLS8 API, the recursive structure is not valid.Sets the component type of this array type. The component type may be another array type.- Parameter:
componentType
- the component type- Löst aus:
IllegalArgumentException
- if:- the node belongs to a different AST
- the node already has a parent
- a cycle in would be created
UnsupportedOperationException
- if this operation is used in an AST later than JLS4
-
getElementType
Returns the element type of this array type. The element type is never an array type.In JLS4 and earlier, this is a convenience method that descends a chain of nested array types until it reaches a non-array type.
- Gibt zurück:
- the element type node
-
setElementType
Sets the element type of the array.- Parameter:
type
- the new type- Löst aus:
IllegalArgumentException
- if:- the node belongs to a different AST
- the node already has a parent
- the node is an array type
UnsupportedOperationException
- if this operation is used below JLS8- Seit:
- 3.10
-
getDimensions
public int getDimensions()Returns the number of dimensions in this array type.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.
- Gibt zurück:
- the number of dimensions (always positive)
-
dimensions
Returns the live ordered list of dimensions with optional annotations (added in JLS8 API).For the array type to be plausible, the list should contain at least one element.
- Gibt zurück:
- the live list of dimensions with optional annotations (element type:
Dimension
) - Löst aus:
UnsupportedOperationException
- if this operation is used below JLS8- Seit:
- 3.10
-
ELEMENT_TYPE_PROPERTY
andDIMENSIONS_PROPERTY
.