org.springframework.expression.spel.support
Class ReflectiveMethodResolver
java.lang.Object
org.springframework.expression.spel.support.ReflectiveMethodResolver
- All Implemented Interfaces:
- MethodResolver
public class ReflectiveMethodResolver
- extends java.lang.Object
- implements MethodResolver
A method resolver that uses reflection to locate the method that should be invoked.
- Since:
- 3.0
- Author:
- Andy Clement, Juergen Hoeller
Constructor Summary |
ReflectiveMethodResolver()
|
ReflectiveMethodResolver(boolean useDistance)
This constructors allows the ReflectiveMethodResolver to be configured such that it will
use a distance computation to check which is the better of two close matches (when there
are multiple matches). |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NO_METHODS
private static java.lang.reflect.Method[] NO_METHODS
filters
private java.util.Map<java.lang.Class<?>,MethodFilter> filters
useDistance
private boolean useDistance
ReflectiveMethodResolver
public ReflectiveMethodResolver()
ReflectiveMethodResolver
public ReflectiveMethodResolver(boolean useDistance)
- This constructors allows the ReflectiveMethodResolver to be configured such that it will
use a distance computation to check which is the better of two close matches (when there
are multiple matches). Using the distance computation is intended to ensure matches
are more closely representative of what a Java compiler would do when taking into
account boxing/unboxing and whether the method candidates are declared to handle a
supertype of the type (of the argument) being passed in.
- Parameters:
useDistance
- true if distance computation should be used when calculating matches
resolve
public MethodExecutor resolve(EvaluationContext context,
java.lang.Object targetObject,
java.lang.String name,
java.util.List<TypeDescriptor> argumentTypes)
throws AccessException
- Locate a method on a type. There are three kinds of match that might occur:
- An exact match where the types of the arguments match the types of the constructor
- An in-exact match where the types we are looking for are subtypes of those defined on the constructor
- A match where we are able to convert the arguments into those expected by the constructor,
according to the registered type converter.
- Specified by:
resolve
in interface MethodResolver
- Parameters:
context
- the current evaluation contexttargetObject
- the object upon which the method is being calledargumentTypes
- the arguments that the constructor must be able to handle
- Returns:
- a MethodExecutor that can invoke the method, or null if the method cannot be found
- Throws:
AccessException
registerMethodFilter
public void registerMethodFilter(java.lang.Class<?> type,
MethodFilter filter)