org.springframework.data.spel.spi

## Class Function

- java.lang.Object
- - org.springframework.data.spel.spi.Function

    public class Function
    extends Object

Value object to represent a function. Can either be backed by a static `Method` invocation (see `Function(Method)`) or a method invocation on an instance (see `Function(Method, Object)`.

Since:
  1.9
Author:
  Thomas Darimont, Oliver Gierke, Jens Schauder

### Constructor Summary

Constructors
Constructor and Description
`Function(Method method)` Creates a new `Function` to statically invoke the given `Method`.
`Function(Method method, Object target)` Creates a new `Function` for the given method on the given target instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`Class<?>` `getDeclaringClass()` Returns the type declaring the `Function`.
`String` `getName()` Returns the name of the function.
`int` `getParameterCount()` Returns the number of parameters required by the underlying method.
`Object` `invoke(Object[] arguments)` Invokes the function with the given arguments.
`boolean` `isSignatureEqual(Function other)` Checks whether this `Function` has the same signature as another `Function`.
`boolean` `supports(List<TypeDescriptor> argumentTypes)` Returns true if the function can be called with the given `argumentTypes`.
`boolean` `supportsExact(List<TypeDescriptor> argumentTypes)` Checks if the encapsulated method has exactly the argument types as those passed as an argument.

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

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

### Constructor Detail

#### Function

    public Function(Method method)

Creates a new `Function` to statically invoke the given `Method`.

Parameters:
  `method` -

#### Function

    public Function(Method method,
                    @Nullable
                    Object target)

Creates a new `Function` for the given method on the given target instance.

Parameters:
  `method` - must not be null.
  `target` - can be null, if so, the method

### Method Detail

#### invoke

    public Object invoke(Object[] arguments)
                  throws Exception

Invokes the function with the given arguments.

Parameters:
  `arguments` - must not be null.
Returns:
Throws:
  `Exception`

#### getName

    public String getName()

Returns the name of the function.

Returns:

#### getDeclaringClass

    public Class<?> getDeclaringClass()

Returns the type declaring the `Function`.

Returns:

#### supports

    public boolean supports(List<TypeDescriptor> argumentTypes)

Returns true if the function can be called with the given `argumentTypes`.

Parameters:
  `argumentTypes` -
Returns:

#### getParameterCount

    public int getParameterCount()

Returns the number of parameters required by the underlying method.

Returns:

#### supportsExact

    public boolean supportsExact(List<TypeDescriptor> argumentTypes)

Checks if the encapsulated method has exactly the argument types as those passed as an argument.

Parameters:
  `argumentTypes` - a list of `TypeDescriptor`s to compare with the argument types of the method
Returns:
  `true` if the types are equal, `false` otherwise.

#### isSignatureEqual

    public boolean isSignatureEqual(Function other)

Checks whether this `Function` has the same signature as another `Function`.

Parameters:
  `other` - the `Function` to compare `this` with.
Returns:
  `true` if name and argument list are the same.