Package org.codehaus.groovy.ast.expr

# Class ArrayExpression

java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.ArrayExpression

All Implemented Interfaces:
  `GroovydocHolder<AnnotatedNode>`, `NodeMetaDataHandler`

public class ArrayExpression extends Expression
Represents an array literal or array construction expression. Supports both fixed-size array construction (e.g., `new String[3]` or `new Integer[2][3]`) and array initialization with explicit elements (e.g., `new String[] { "foo", "bar" }`). The expression may be either an initializer-based array or a size-based array, but not both.

- ## Field Summary

  ### Fields inherited from class org.codehaus.groovy.ast.expr.Expression

  `EMPTY_ARRAY`

  ### Fields inherited from interface groovy.lang.groovydoc.GroovydocHolder

  `DOC_COMMENT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ArrayExpression(ClassNode elementType, List<Expression> initExpressions)`
  Creates an array using an initializer list of expressions corresponding to array elements.
  `ArrayExpression(ClassNode elementType, List<Expression> initExpressions, List<Expression> sizeExpressions)`
  Constructs an array expression with either size expressions or initializer expressions.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addExpression(Expression initExpression)`
  Adds an element to the initializer expressions.
  `ClassNode`
  `getElementType()`
  Returns the base element type of the array (before array dimensions are applied).
  `Expression`
  `getExpression(int i)`
  Returns the initializer expression at the specified index.
  `List<Expression>`
  `getExpressions()`
  Returns the list of initializer expressions for array elements.
  `List<Expression>`
  `getSizeExpression()`
  Returns the size expressions for each dimension of the array.
  `String`
  `getText()`
  Returns a human-readable text representation of this AST node.
  `boolean`
  `hasInitializer()`
  Indicates whether this array is defined by an explicit initializer or by size expressions.
  `boolean`
  `isDynamic()`
  `String`
  `toString()`
  `Expression`
  `transformExpression(ExpressionTransformer transformer)`
  Transforms this expression and any nested expressions according to the provided transformer.
  `void`
  `visit(GroovyCodeVisitor visitor)`
  Accepts a code visitor for AST traversal and transformation.

  ### Methods inherited from class org.codehaus.groovy.ast.expr.Expression

  `getType, setType, transformExpressions, transformExpressions`

  ### Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode

  `addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic`

  ### Methods inherited from class org.codehaus.groovy.ast.ASTNode

  `copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition`

  ### Methods inherited from class java.lang.Object

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

  ### Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler

  `copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData`

- ## Constructor Details

  - ### ArrayExpression

    public ArrayExpression(ClassNode elementType, List<Expression> initExpressions, List<Expression> sizeExpressions)
    Constructs an array expression with either size expressions or initializer expressions.
    Parameters:
      `elementType` - the base element type of the array (non-null)
      `initExpressions` - the list of initializer expressions for array elements, or null for size-based construction
      `sizeExpressions` - the list of size expressions (one per dimension) for fixed-size arrays, or null for initializer-based construction
    Throws:
      `IllegalArgumentException` - if both initExpressions and sizeExpressions are provided or both are null/empty
      `IllegalArgumentException` - if any initializer is not an `Expression`

  - ### ArrayExpression

    public ArrayExpression(ClassNode elementType, List<Expression> initExpressions)
    Creates an array using an initializer list of expressions corresponding to array elements.
    Parameters:
      `elementType` - the base element type of the array (non-null)
      `initExpressions` - the list of initializer expressions for array elements (non-null)

- ## Method Details

  - ### transformExpression

    public Expression transformExpression(ExpressionTransformer transformer)
    Description copied from class: `Expression`
    Transforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.
    Specified by:
      `transformExpression` in class `Expression`
    Parameters:
      `transformer` - the `ExpressionTransformer` to apply
    Returns:
      a transformed copy of this expression (or this expression itself if no changes are needed)

  - ### visit

    public void visit(GroovyCodeVisitor visitor)
    Description copied from class: `ASTNode`
    Accepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.
    Overrides:
      `visit` in class `ASTNode`
    Parameters:
      `visitor` - the `GroovyCodeVisitor` to process this node

  - ### getElementType

    public ClassNode getElementType()
    Returns the base element type of the array (before array dimensions are applied).
    Returns:
      the element type

  - ### getExpressions

    public List<Expression> getExpressions()
    Returns the list of initializer expressions for array elements.
    Returns:
      a list of initializer expressions (non-null but may be empty for size-based arrays)

  - ### getExpression

    public Expression getExpression(int i)
    Returns the initializer expression at the specified index.
    Parameters:
      `i` - the index of the element
    Returns:
      the expression at the specified index
    Throws:
      `IndexOutOfBoundsException` - if the index is out of range

  - ### addExpression

    public void addExpression(Expression initExpression)
    Adds an element to the initializer expressions.
    Parameters:
      `initExpression` - the expression to add (non-null)

  - ### getSizeExpression

    public List<Expression> getSizeExpression()
    Returns the size expressions for each dimension of the array.
    Returns:
      a list with one expression per array dimension (non-null for size-based arrays, null for initializer-based)

  - ### getText

    public String getText()
    Description copied from class: `ASTNode`
    Returns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type.
    Overrides:
      `getText` in class `ASTNode`
    Returns:
      text representation of this node, or placeholder for unimplemented types

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### isDynamic

    public boolean isDynamic()

  - ### hasInitializer

    public boolean hasInitializer()
    Indicates whether this array is defined by an explicit initializer or by size expressions.
    Returns:
      true if the array has an explicit initializer, false if defined by size expressions