org.springframework.expression

## Interface OperatorOverloader

- All Known Implementing Classes:
    StandardOperatorOverloader

      public interface OperatorOverloader

  By default the mathematical operators `Operation` support simple types like numbers. By providing an implementation of OperatorOverloader, a user of the expression language can support these operations on other types.
  Since:
    3.0
  Author:
    Andy Clement

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `operate(Operation operation, Object leftOperand, Object rightOperand)` Execute the specified operation on two operands, returning a result.
    `boolean` | `overridesOperation(Operation operation, Object leftOperand, Object rightOperand)` Return true if the operator overloader supports the specified operation between the two operands and so should be invoked to handle it.

- - ### Method Detail

    - #### overridesOperation

          boolean overridesOperation(Operation operation,
                                   Object leftOperand,
                                   Object rightOperand)
                                     throws EvaluationException

      Return true if the operator overloader supports the specified operation between the two operands and so should be invoked to handle it.
      Parameters:
        `operation` - the operation to be performed
        `leftOperand` - the left operand
        `rightOperand` - the right operand
      Returns:
        true if the OperatorOverloader supports the specified operation between the two operands
      Throws:
        `EvaluationException` - if there is a problem performing the operation

    - #### operate

          Object operate(Operation operation,
                       Object leftOperand,
                       Object rightOperand)
                         throws EvaluationException

      Execute the specified operation on two operands, returning a result. See `Operation` for supported operations.
      Parameters:
        `operation` - the operation to be performed
        `leftOperand` - the left operand
        `rightOperand` - the right operand
      Returns:
        the result of performing the operation on the two operands
      Throws:
        `EvaluationException` - if there is a problem performing the operation