org.springframework.expression.spel.ast

## Interface ValueRef

- All Known Implementing Classes:
    ValueRef.NullValueRef, ValueRef.TypedValueHolderValueRef

      public interface ValueRef

  Represents a reference to a value. With a reference it is possible to get or set the value. Passing around value references rather than the values themselves can avoid incorrect duplication of operand evaluation. For example in 'list[index++]++' without a value reference for 'list[index++]' it would be necessary to evaluate list[index++] twice (once to get the value, once to determine where the value goes) and that would double increment index.
  Since:
    3.2
  Author:
    Andy Clement

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `ValueRef.NullValueRef` A ValueRef for the null value.
    `static class` | `ValueRef.TypedValueHolderValueRef` A ValueRef holder for a single value, which cannot be set.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `TypedValue` | `getValue()` Returns the value this ValueRef points to, it should not require expression component re-evaluation.
    `boolean` | `isWritable()` Indicates whether calling setValue(Object) is supported.
    `void` | `setValue(Object newValue)` Sets the value this ValueRef points to, it should not require expression component re-evaluation.

- - ### Method Detail

    - #### getValue

          TypedValue getValue()

      Returns the value this ValueRef points to, it should not require expression component re-evaluation.
      Returns:
        the value

    - #### setValue

          void setValue(@Nullable
                        Object newValue)

      Sets the value this ValueRef points to, it should not require expression component re-evaluation.
      Parameters:
        `newValue` - the new value

    - #### isWritable

          boolean isWritable()

      Indicates whether calling setValue(Object) is supported.
      Returns:
        true if setValue() is supported for this value reference.