public class ReflectiveMethodResolver extends java.lang.Object implements MethodResolver
MethodResolver
used by default in
StandardEvaluationContext
unless explicit method resolvers have been specified.StandardEvaluationContext.addMethodResolver(MethodResolver)
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.Class<?>,MethodFilter> |
filters |
private static java.lang.reflect.Method[] |
NO_METHODS |
private boolean |
useDistance |
Constructor and Description |
---|
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).
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.reflect.Method[] |
getMethods(java.lang.Class<?> type)
Return the set of methods for this type.
|
private java.lang.reflect.Method[] |
getMethods(java.lang.Class<?> type,
java.lang.Object targetObject) |
void |
registerMethodFilter(java.lang.Class<?> type,
MethodFilter filter) |
MethodExecutor |
resolve(EvaluationContext context,
java.lang.Object targetObject,
java.lang.String name,
java.util.List<TypeDescriptor> argumentTypes)
Locate a method on a type.
|
private static java.lang.reflect.Method[] NO_METHODS
private java.util.Map<java.lang.Class<?>,MethodFilter> filters
private boolean useDistance
public ReflectiveMethodResolver()
public ReflectiveMethodResolver(boolean useDistance)
useDistance
- true if distance computation should be used when calculating matchespublic MethodExecutor resolve(EvaluationContext context, java.lang.Object targetObject, java.lang.String name, java.util.List<TypeDescriptor> argumentTypes) throws AccessException
resolve
in interface MethodResolver
context
- the current evaluation contexttargetObject
- the object upon which the method is being calledargumentTypes
- the arguments that the constructor must be able to handleAccessException
public void registerMethodFilter(java.lang.Class<?> type, MethodFilter filter)
private java.lang.reflect.Method[] getMethods(java.lang.Class<?> type, java.lang.Object targetObject)
protected java.lang.reflect.Method[] getMethods(java.lang.Class<?> type)
type
, but subclasses may override
in order to alter the results, e.g. specifying static methods declared elsewhere.type
- the class for which to return the methods