Java Method Call invoke(Object obj, String method, Class[] params, Object[] args)

Here you can find the source of invoke(Object obj, String method, Class[] params, Object[] args)

Description

Invokes method of a given obj and set of parameters

License

Open Source License

Parameter

Parameter Description
obj - Object for which the method is going to be executed. Special if obj is of type java.lang.Class, method is executed as static method of class given as obj parameter
method - name of the object
params - actual parameters for the method

Return

- result of the method execution

If there is any problem with method invocation, a RuntimeException is thrown

Declaration

public static Object invoke(Object obj, String method, Class<?>[] params, Object[] args) 

Method Source Code

//package com.java2s;
//License from project: Open Source License 

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Main {
    /**//from www .ja v a2  s.c o  m
     * <p>Invokes method of a given obj and set of parameters</p>
     *
     * @param obj - Object for which the method is going to be executed. Special
     *          if obj is of type java.lang.Class, method is executed as static method
     *          of class given as obj parameter
     * @param method - name of the object
     * @param params - actual parameters for the method
     * @return - result of the method execution
     *
     * <p>If there is any problem with method invocation, a RuntimeException is thrown</p>
     */
    public static Object invoke(Object obj, String method, Class<?>[] params, Object[] args) {
        try {
            return invoke_ex(obj, method, params, args);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static Object invoke_ex(Object obj, String method, Class<?>[] params, Object[] args)
            throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        Class<?> clazz = null;
        if (obj instanceof Class<?>) {
            clazz = (Class<?>) obj;
        } else {
            clazz = obj.getClass();
        }
        Method methods = clazz.getDeclaredMethod(method, params);
        methods.setAccessible(true);
        if (obj instanceof Class<?>) {
            return methods.invoke(null, args);
        } else {
            return methods.invoke(obj, args);
        }
    }
}

Related

  1. invoke(Object o, String name)
  2. invoke(Object o, String name, Object[] args)
  3. invoke(Object o, String name, Object[] args)
  4. invoke(Object obj, Method method, Object[] args)
  5. invoke(Object obj, Method method, Object[] params)
  6. invoke(Object obj, String method, Class[] params, Object[] args)
  7. invoke(Object obj, String method, Object param, Object paramType)
  8. invoke(Object obj, String methodName)
  9. invoke(Object obj, String methodName, boolean newValue)