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

Methods
`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(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.