This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 91ebbc2d8 Javadoc
91ebbc2d8 is described below

commit 91ebbc2d89c04696e43e9831eb5b455c00278890
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Fri Jul 18 08:13:42 2025 -0400

    Javadoc
    
    - Use final
---
 .../apache/commons/lang3/reflect/MethodUtils.java  | 97 +++++++++-------------
 1 file changed, 40 insertions(+), 57 deletions(-)

diff --git a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java 
b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
index 8814c2830..f50433f54 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
@@ -67,7 +67,7 @@ public class MethodUtils {
     private static final Comparator<Method> METHOD_BY_SIGNATURE = 
Comparator.comparing(Method::toString);
 
     /**
-     * Returns the aggregate number of inheritance hops between assignable 
argument class types.  Returns -1
+     * Computes the aggregate number of inheritance hops between assignable 
argument class types.  Returns -1
      * if the arguments aren't assignable.  Fills a specific purpose for 
getMatchingMethod and is not generalized.
      *
      * @param fromClassArray the Class array to calculate the distance from.
@@ -76,7 +76,6 @@ public class MethodUtils {
      */
     private static int distance(final Class<?>[] fromClassArray, final 
Class<?>[] toClassArray) {
         int answer = 0;
-
         if (!ClassUtils.isAssignable(fromClassArray, toClassArray, true)) {
             return -1;
         }
@@ -87,14 +86,12 @@ private static int distance(final Class<?>[] 
fromClassArray, final Class<?>[] to
             if (aClass == null || aClass.equals(toClass)) {
                 continue;
             }
-            if (ClassUtils.isAssignable(aClass, toClass, true)
-                    && !ClassUtils.isAssignable(aClass, toClass, false)) {
+            if (ClassUtils.isAssignable(aClass, toClass, true) && 
!ClassUtils.isAssignable(aClass, toClass, false)) {
                 answer++;
             } else {
                 answer += 2;
             }
         }
-
         return answer;
     }
 
@@ -189,10 +186,10 @@ private static Method 
getAccessibleMethodFromInterfaceNest(Class<?> cls, final S
      * reflection) by scanning through the superclasses. If no such method
      * can be found, return {@code null}.
      *
-     * @param cls Class to be checked
-     * @param methodName Method name of the method we wish to call
-     * @param parameterTypes The parameter type signatures
-     * @return the accessible method or {@code null} if not found
+     * @param cls Class to be checked.
+     * @param methodName Method name of the method we wish to call.
+     * @param parameterTypes The parameter type signatures.
+     * @return the accessible method or {@code null} if not found.
      */
     private static Method getAccessibleMethodFromSuperclass(final Class<?> 
cls, final String methodName, final Class<?>... parameterTypes) {
         Class<?> parentClass = cls.getSuperclass();
@@ -295,15 +292,14 @@ public static <A extends Annotation> A 
getAnnotation(final Method method, final
      * <p>
      * This method is used by {@link #invokeMethod(Object object, String 
methodName, Object[] args, Class[] parameterTypes)}.
      * </p>
-     *
      * <p>
      * This method can match primitive parameter by passing in wrapper 
classes. For example, a {@link Boolean} will match a primitive {@code boolean} 
parameter.
      * </p>
      *
-     * @param cls            find method in this class
-     * @param methodName     find method with this name
-     * @param parameterTypes find method with most compatible parameters
-     * @return The accessible method
+     * @param cls            find method in this class.
+     * @param methodName     find method with this name.
+     * @param parameterTypes find method with most compatible parameters.
+     * @return The accessible method or null.
      * @throws SecurityException if an underlying accessible object's method 
denies the request.
      * @see SecurityManager#checkPermission
      */
@@ -630,10 +626,10 @@ public static Object invokeExactMethod(final Object 
object, final String methodN
      * @throws NullPointerException        Thrown if the specified {@code 
object} is null.
      * @throws ExceptionInInitializerError Thrown if the initialization 
provoked by this method fails.
      */
-    public static Object invokeExactMethod(final Object object, final String 
methodName, Object... args)
+    public static Object invokeExactMethod(final Object object, final String 
methodName, final Object... args)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        return invokeExactMethod(object, methodName, args, 
ClassUtils.toClass(args));
+        final Object[] actuals = ArrayUtils.nullToEmpty(args);
+        return invokeExactMethod(object, methodName, actuals, 
ClassUtils.toClass(actuals));
     }
 
     /**
@@ -664,17 +660,14 @@ public static Object invokeExactMethod(final Object 
object, final String methodN
      * @throws NullPointerException        Thrown if the specified {@code 
object} is null.
      * @throws ExceptionInInitializerError Thrown if the initialization 
provoked by this method fails.
      */
-    public static Object invokeExactMethod(final Object object, final String 
methodName, Object[] args, Class<?>[] parameterTypes)
+    public static Object invokeExactMethod(final Object object, final String 
methodName, final Object[] args, final Class<?>[] parameterTypes)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        Objects.requireNonNull(object, "object");
-        args = ArrayUtils.nullToEmpty(args);
-        parameterTypes = ArrayUtils.nullToEmpty(parameterTypes);
-        final Class<?> cls = object.getClass();
-        final Method method = getAccessibleMethod(cls, methodName, 
parameterTypes);
+        final Class<?> cls = Objects.requireNonNull(object, 
"object").getClass();
+        final Method method = getAccessibleMethod(cls, methodName, 
ArrayUtils.nullToEmpty(parameterTypes));
         if (method == null) {
             throw new NoSuchMethodException("No such accessible method: " + 
methodName + "() on object: " + cls.getName());
         }
-        return method.invoke(object, args);
+        return method.invoke(object, ArrayUtils.nullToEmpty(args));
     }
 
     /**
@@ -692,10 +685,10 @@ public static Object invokeExactMethod(final Object 
object, final String methodN
      * @throws InvocationTargetException wraps an exception thrown by the 
method invoked
      * @throws IllegalAccessException    if the requested method is not 
accessible via reflection
      */
-    public static Object invokeExactStaticMethod(final Class<?> cls, final 
String methodName, Object... args)
+    public static Object invokeExactStaticMethod(final Class<?> cls, final 
String methodName, final Object... args)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        return invokeExactStaticMethod(cls, methodName, args, 
ClassUtils.toClass(args));
+        final Object[] actuals = ArrayUtils.nullToEmpty(args);
+        return invokeExactStaticMethod(cls, methodName, actuals, 
ClassUtils.toClass(actuals));
     }
 
     /**
@@ -714,15 +707,13 @@ public static Object invokeExactStaticMethod(final 
Class<?> cls, final String me
      * @throws InvocationTargetException wraps an exception thrown by the 
method invoked
      * @throws IllegalAccessException    if the requested method is not 
accessible via reflection
      */
-    public static Object invokeExactStaticMethod(final Class<?> cls, final 
String methodName, Object[] args, Class<?>[] parameterTypes)
+    public static Object invokeExactStaticMethod(final Class<?> cls, final 
String methodName, final Object[] args, final Class<?>[] parameterTypes)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        parameterTypes = ArrayUtils.nullToEmpty(parameterTypes);
-        final Method method = getAccessibleMethod(cls, methodName, 
parameterTypes);
+        final Method method = getAccessibleMethod(cls, methodName, 
ArrayUtils.nullToEmpty(parameterTypes));
         if (method == null) {
             throw new NoSuchMethodException("No such accessible method: " + 
methodName + "() on class: " + cls.getName());
         }
-        return method.invoke(null, args);
+        return method.invoke(null, ArrayUtils.nullToEmpty(args));
     }
 
     /**
@@ -775,10 +766,10 @@ public static Object invokeMethod(final Object object, 
final boolean forceAccess
      * @see SecurityManager#checkPermission
      * @since 3.5
      */
-    public static Object invokeMethod(final Object object, final boolean 
forceAccess, final String methodName, Object... args)
+    public static Object invokeMethod(final Object object, final boolean 
forceAccess, final String methodName, final Object... args)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        return invokeMethod(object, forceAccess, methodName, args, 
ClassUtils.toClass(args));
+        final Object[] actuals = ArrayUtils.nullToEmpty(args);
+        return invokeMethod(object, forceAccess, methodName, actuals, 
ClassUtils.toClass(actuals));
     }
 
     /**
@@ -804,11 +795,10 @@ public static Object invokeMethod(final Object object, 
final boolean forceAccess
      * @see SecurityManager#checkPermission
      * @since 3.5
      */
-    public static Object invokeMethod(final Object object, final boolean 
forceAccess, final String methodName, Object[] args, Class<?>[] parameterTypes)
+    public static Object invokeMethod(final Object object, final boolean 
forceAccess, final String methodName, final Object[] args, Class<?>[] 
parameterTypes)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
         Objects.requireNonNull(object, "object");
         parameterTypes = ArrayUtils.nullToEmpty(parameterTypes);
-        args = ArrayUtils.nullToEmpty(args);
         final String messagePrefix;
         final Method method;
         final Class<? extends Object> cls = object.getClass();
@@ -825,8 +815,7 @@ public static Object invokeMethod(final Object object, 
final boolean forceAccess
         if (method == null) {
             throw new NoSuchMethodException(messagePrefix + methodName + "() 
on object: " + cls.getName());
         }
-        args = toVarArgs(method, args);
-        return method.invoke(object, args);
+        return method.invoke(object, toVarArgs(method, 
ArrayUtils.nullToEmpty(args)));
     }
 
     /**
@@ -882,10 +871,10 @@ public static Object invokeMethod(final Object object, 
final String methodName)
      * @throws SecurityException if an underlying accessible object's method 
denies the request.
      * @see SecurityManager#checkPermission
      */
-    public static Object invokeMethod(final Object object, final String 
methodName, Object... args)
+    public static Object invokeMethod(final Object object, final String 
methodName, final Object... args)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        return invokeMethod(object, methodName, args, 
ClassUtils.toClass(args));
+        final Object[] actuals = ArrayUtils.nullToEmpty(args);
+        return invokeMethod(object, methodName, actuals, 
ClassUtils.toClass(actuals));
     }
 
     /**
@@ -911,10 +900,8 @@ public static Object invokeMethod(final Object object, 
final String methodName,
      * @throws SecurityException if an underlying accessible object's method 
denies the request.
      * @see SecurityManager#checkPermission
      */
-    public static Object invokeMethod(final Object object, final String 
methodName,
-            final Object[] args, final Class<?>[] parameterTypes)
-            throws NoSuchMethodException, IllegalAccessException,
-            InvocationTargetException {
+    public static Object invokeMethod(final Object object, final String 
methodName, final Object[] args, final Class<?>[] parameterTypes)
+            throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
         return invokeMethod(object, false, methodName, args, parameterTypes);
     }
 
@@ -944,11 +931,10 @@ public static Object invokeMethod(final Object object, 
final String methodName,
      * @throws SecurityException if an underlying accessible object's method 
denies the request.
      * @see SecurityManager#checkPermission
      */
-    public static Object invokeStaticMethod(final Class<?> cls, final String 
methodName,
-            Object... args) throws NoSuchMethodException,
-            IllegalAccessException, InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        return invokeStaticMethod(cls, methodName, args, 
ClassUtils.toClass(args));
+    public static Object invokeStaticMethod(final Class<?> cls, final String 
methodName, final Object... args)
+            throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
+        final Object[] actuals = ArrayUtils.nullToEmpty(args);
+        return invokeStaticMethod(cls, methodName, actuals, 
ClassUtils.toClass(actuals));
     }
 
     /**
@@ -974,16 +960,13 @@ public static Object invokeStaticMethod(final Class<?> 
cls, final String methodN
      * @throws SecurityException if an underlying accessible object's method 
denies the request.
      * @see SecurityManager#checkPermission
      */
-    public static Object invokeStaticMethod(final Class<?> cls, final String 
methodName, Object[] args, Class<?>[] parameterTypes)
+    public static Object invokeStaticMethod(final Class<?> cls, final String 
methodName, final Object[] args, final Class<?>[] parameterTypes)
             throws NoSuchMethodException, IllegalAccessException, 
InvocationTargetException {
-        args = ArrayUtils.nullToEmpty(args);
-        parameterTypes = ArrayUtils.nullToEmpty(parameterTypes);
-        final Method method = getMatchingAccessibleMethod(cls, methodName, 
parameterTypes);
+        final Method method = getMatchingAccessibleMethod(cls, methodName, 
ArrayUtils.nullToEmpty(parameterTypes));
         if (method == null) {
             throw new NoSuchMethodException("No such accessible method: " + 
methodName + "() on class: " + cls.getName());
         }
-        args = toVarArgs(method, args);
-        return method.invoke(null, args);
+        return method.invoke(null, toVarArgs(method, 
ArrayUtils.nullToEmpty(args)));
     }
 
     private static Object[] toVarArgs(final Method method, Object[] args) {

Reply via email to