Invokes the underlying method represented by this
Method object, on the specified object with the
specified parameters. Individual parameters are
automatically unwrapped to match primitive
formal parameters, and both primitive and
reference parameters are subject to widening
conversions as necessary. The value returned by
the underlying method is automatically wrapped
in an object if it has a primitive type.
Method invocation proceeds with the following
steps, in order:
If the underlying method is static, then the
specified object argument is ignored. It may be
null.
Otherwise, the method is an instance method. If
the specified object argument is null, the
invocation throws a NullPointerException.
Otherwise, if the specified object argument is not
an instance of the class or interface declaring the
underlying method, the invocation throws an
IllegalArgumentException.
If this Method object enforces Java language access
control and the underlying method is inaccessible,
the invocation throws an IllegalAccessException.
If the number of actual parameters supplied via
args is different from the number of formal
parameters required by the underlying method, the
invocation throws an IllegalArgumentException.
For each actual parameter in the supplied args
array:
If the corresponding formal parameter has a
primitive type, an unwrapping conversion is
attempted to convert the object value to a value of
a primitive type. If this attempt fails, the
invocation throws an IllegalArgumentException.
If, after possible unwrapping, the parameter value
cannot be converted to the corresponding formal
parameter type by an identity or widening
conversion, the invocation throws an
IllegalArgumentException.
If the underlying method is an instance method, it
is invoked using dynamic method lookup as
documented in The Java Language Specification,
section 15.11.4.4; in particular, overriding based
on the runtime type of the target object will occur.
If the underlying method is static, it is invoked as
exactly the method on the declaring class.
Control transfers to the underlying method. If the
method completes abruptly by throwing an
exception, the exception is placed in an
InvocationTargetException and thrown in turn to
the caller of invoke.
If the method completes normally, the value it
returns is returned to the caller of invoke; if the
value has a primitive type, it is first appropriately
wrapped in an object. If the underlying method
return type is void, the invocation returns null.
Throws: IllegalAccessException
if the underlying method is inaccessible.
Throws: IllegalArgumentException
if the number of actual and formal
parameters differ, or if an unwrapping
conversion fails.
Throws: InvocationTargetException
if the underlying method throws an
exception.
Throws: NullPointerException
if the specified object is null.