|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.jaxfront.core.util.MethodUtils
public class MethodUtils
Utility reflection methods focussed on methods in general rather than properties in particular.
There is an issue when invoking public methods contained in a default access superclass. Reflection locates these methods fine and correctly
assigns them as public. However, an IllegalAccessException is thrown if the method is invoked.
MethodUtils contains a workaround for this situation. It will attempt to call setAccessible on this method. If this
call succeeds, then the method can be invoked as normal. This call will only succeed when the application has sufficient security privilages. If
this call fails then a warning will be logged and the method may fail.
| Constructor Summary | |
|---|---|
MethodUtils()
|
|
| Method Summary | |
|---|---|
static java.lang.reflect.Method |
getAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class parameterType)
Return an accessible method (that is, one that can be invoked via reflection) with given name and a single parameter. |
static java.lang.reflect.Method |
getAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
Return an accessible method (that is, one that can be invoked via reflection) with given name and parameters. |
static java.lang.reflect.Method |
getAccessibleMethod(java.lang.reflect.Method method)
Return an accessible method (that is, one that can be invoked via reflection) that implements the specified Method. |
static java.lang.reflect.Constructor |
getMatchingAccessibleConstructor(java.lang.Class clazz,
java.lang.Class[] parameterTypes)
|
static java.lang.reflect.Method |
getMatchingAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
Find an accessible method that matches the given name and has compatible parameters. |
static java.lang.Class |
getPrimitiveType(java.lang.Class wrapperType)
Gets the class for the primitive type corresponding to the primitive wrapper class given. |
static java.lang.Class |
getPrimitiveWrapper(java.lang.Class primitiveType)
Gets the wrapper object class for the given primitive type class. |
static java.lang.Object |
invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object arg)
Invoke a method whose parameter type matches exactly the object type. |
static java.lang.Object |
invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args)
Invoke a method whose parameter types match exactly the object types. |
static java.lang.Object |
invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
Invoke a method whose parameter types match exactly the parameter types given. |
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object arg)
Invoke a named method whose parameter type matches the object type. |
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args)
Invoke a named method whose parameter type matches the object type. |
static java.lang.Object |
invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
Invoke a named method whose parameter type matches the object type. |
static boolean |
isAssignmentCompatible(java.lang.Class parameterType,
java.lang.Class parameterization)
Determine whether a type can be used as a parameter in a method invocation. |
static java.lang.Class |
toNonPrimitiveClass(java.lang.Class clazz)
Find a non primitive representation for given primitive class. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public MethodUtils()
| Method Detail |
|---|
public static java.lang.reflect.Method getAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class parameterType)
Return an accessible method (that is, one that can be invoked via reflection) with given name and a single parameter. If no such method can be
found, return null. Basically, a convenience wrapper that constructs a Class array for you.
clazz - get method from this classmethodName - get method with this nameparameterType - taking this type of parameter
public static java.lang.reflect.Method getAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
Return an accessible method (that is, one that can be invoked via reflection) with given name and parameters. If no such method can be found,
return null. This is just a convenient wrapper for getAccessibleMethod(Method method).
clazz - get method from this classmethodName - get method with this nameparameterTypes - with these parameters typespublic static java.lang.reflect.Method getAccessibleMethod(java.lang.reflect.Method method)
Return an accessible method (that is, one that can be invoked via reflection) that implements the specified Method. If no such method can be
found, return null.
method - The method that we wish to call
public static java.lang.reflect.Constructor getMatchingAccessibleConstructor(java.lang.Class clazz,
java.lang.Class[] parameterTypes)
public static java.lang.reflect.Method getMatchingAccessibleMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] parameterTypes)
Find an accessible method that matches the given name and has compatible parameters. Compatible parameters mean that every method parameter is assignable from the given parameters. In other words, it finds a method with the given name that will take the parameters given.
This method is slightly undeterminstic since it loops through methods names and return the first matching method.
This method is used by invokeMethod(Object object,String methodName,Object [] args,Class[] parameterTypes).
This method can match primitive parameter by passing in wrapper classes. For example, a Boolean will match a primitive
boolean parameter.
clazz - find method in this classmethodName - find method with this nameparameterTypes - find method with compatible parameterspublic static java.lang.Class getPrimitiveType(java.lang.Class wrapperType)
Boolean.class returns a boolean.class.
wrapperType - the
public static java.lang.Class getPrimitiveWrapper(java.lang.Class primitiveType)
boolean.class returns
Boolean.class
primitiveType - the primitive type class for which a match is to be found
public static java.lang.Object invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object arg)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a method whose parameter type matches exactly the object type.
This is a convenient wrapper for invokeExactMethod(Object object,String methodName,Object [] args).
object - invoke method on this objectmethodName - get method with this namearg - use this argument
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static java.lang.Object invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a method whose parameter types match exactly the object types.
This uses reflection to invoke the method obtained from a call to getAccessibleMethod(java.lang.Class, java.lang.String, java.lang.Class).
object - invoke method on this objectmethodName - get method with this nameargs - use these arguments - treat null as empty array
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static java.lang.Object invokeExactMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a method whose parameter types match exactly the parameter types given.
This uses reflection to invoke the method obtained from a call to getAccessibleMethod(java.lang.Class, java.lang.String, java.lang.Class).
object - invoke method on this objectmethodName - get method with this nameargs - use these arguments - treat null as empty arrayparameterTypes - match these parameters - treat null as empty array
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object arg)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a named method whose parameter type matches the object type.
The behaviour of this method is less deterministic than invokeExactMethod(java.lang.Object, java.lang.String, java.lang.Object). It loops through all methods with names that match and
then executes the first it finds with compatable parameters.
This method supports calls to methods taking primitive parameters via passing in wrapping classes. So, for example, a Boolean
class would match a boolean primitive.
This is a convenient wrapper for invokeMethod(Object object,String methodName,Object [] args).
object - invoke method on this objectmethodName - get method with this namearg - use this argument
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a named method whose parameter type matches the object type.
The behaviour of this method is less deterministic than invokeExactMethod(Object object,String methodName,Object [] args). It loops
through all methods with names that match and then executes the first it finds with compatable parameters.
This method supports calls to methods taking primitive parameters via passing in wrapping classes. So, for example, a Boolean
class would match a boolean primitive.
This is a convenient wrapper for invokeMethod(Object object,String methodName,Object [] args,Class[] parameterTypes).
object - invoke method on this objectmethodName - get method with this nameargs - use these arguments - treat null as empty array
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static java.lang.Object invokeMethod(java.lang.Object object,
java.lang.String methodName,
java.lang.Object[] args,
java.lang.Class[] parameterTypes)
throws java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
Invoke a named method whose parameter type matches the object type.
The behaviour of this method is less deterministic than
invokeExactMethod(Object object,String methodName,Object [] args,Class[] parameterTypes). It loops through all methods with names
that match and then executes the first it finds with compatable parameters.
This method supports calls to methods taking primitive parameters via passing in wrapping classes. So, for example, a Boolean
class would match a boolean primitive.
object - invoke method on this objectmethodName - get method with this nameargs - use these arguments - treat null as empty arrayparameterTypes - match these parameters - treat null as empty array
java.lang.NoSuchMethodException - if there is no such accessible method
java.lang.reflect.InvocationTargetException - wraps an exception thrown by the method invoked
java.lang.IllegalAccessException - if the requested method is not accessible via reflection
public static final boolean isAssignmentCompatible(java.lang.Class parameterType,
java.lang.Class parameterization)
Determine whether a type can be used as a parameter in a method invocation. This method handles primitive conversions correctly.
In order words, it will match a Boolean to a boolean, a Long to a long, a
Float to a float, a Integer to a int, and a Double to a
double. Now logic widening matches are allowed. For example, a Long will not match a int.
parameterType - the type of parameter accepted by the methodparameterization - the type of parameter being tested
public static java.lang.Class toNonPrimitiveClass(java.lang.Class clazz)
Class - the class to find a representation for, not null
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||