Package org.codehaus.groovy.ast.expr

# Class PropertyExpression

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

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

Direct Known Subclasses:
  `AttributeExpression`

public class PropertyExpression extends Expression
Represents a property access such as the expression "foo.bar".

- ## 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
  `PropertyExpression(Expression objectExpression, String propertyName)`
  `PropertyExpression(Expression objectExpression, Expression property)`
  `PropertyExpression(Expression objectExpression, Expression property, boolean safe)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Expression`
  `getObjectExpression()`
  `Expression`
  `getProperty()`
  `String`
  `getPropertyAsString()`
  `String`
  `getText()`
  Returns a human-readable text representation of this AST node.
  `boolean`
  `isDynamic()`
  `boolean`
  `isImplicitThis()`
  `boolean`
  `isSafe()`
  `boolean`
  `isSpreadSafe()`
  `boolean`
  `isStatic()`
  `void`
  `setImplicitThis(boolean implicitThis)`
  `void`
  `setObjectExpression(Expression objectExpression)`
  `void`
  `setSpreadSafe(boolean spreadSafe)`
  `void`
  `setStatic(boolean isStatic)`
  `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

  - ### PropertyExpression

    public PropertyExpression(Expression objectExpression, String propertyName)

  - ### PropertyExpression

    public PropertyExpression(Expression objectExpression, Expression property)

  - ### PropertyExpression

    public PropertyExpression(Expression objectExpression, Expression property, boolean safe)

- ## 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

  - ### getObjectExpression

    public Expression getObjectExpression()

  - ### setObjectExpression

    public void setObjectExpression(Expression objectExpression)

  - ### getProperty

    public Expression getProperty()

  - ### getPropertyAsString

    public String getPropertyAsString()

  - ### 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

  - ### isDynamic

    public boolean isDynamic()

  - ### isImplicitThis

    public boolean isImplicitThis()

  - ### setImplicitThis

    public void setImplicitThis(boolean implicitThis)

  - ### isSafe

    public boolean isSafe()
    Returns:
      is this a safe navigation, i.e. if true then if the source object is null then this navigation will return null

  - ### isSpreadSafe

    public boolean isSpreadSafe()

  - ### setSpreadSafe

    public void setSpreadSafe(boolean spreadSafe)

  - ### isStatic

    public boolean isStatic()

  - ### setStatic

    public void setStatic(boolean isStatic)

  - ### toString

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