Call static int method. - Java Reflection

Java examples for Reflection:Method

Description

Call static int method.

Demo Code

/*//  ww w .  j  a v a  2s .c o  m
 * NOTE: This is added by intellij IDE. Disregard this message if there is another copyright later in the file.
 * Copyright (C) 2014-2015  Will (n9Mtq4) Bresnahan
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
//package com.java2s;

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

public class Main {
    /**
     * Call static int method.
     *
     * @param methodName  the method name
     * @param clazz       the class
     * @param classParams the class params
     * @param params      the params
     * @return the int
     */
    public static int callStaticIntMethod(String methodName, Class clazz,
            Class[] classParams, Object[] params) {
        return (Integer) callStaticObjectMethod(methodName, clazz,
                classParams, params);
    }

    /**
     * Call static int method.
     *
     * @param methodName the method name
     * @param clazz      the class
     * @param params     the params
     * @return the int
     */
    public static int callStaticIntMethod(String methodName, Class clazz,
            Object... params) {
        return callStaticIntMethod(methodName, clazz,
                getClassParams(params), params);
    }

    /**
     * Call static object method.
     *
     * @param methodName  the method name
     * @param clazz       the class
     * @param classParams the class params
     * @param params      the params
     * @return the object
     */
    public static <E> E callStaticObjectMethod(String methodName,
            Class clazz, Class[] classParams, Object[] params) {
        return callObjectMethod(methodName, null, clazz, classParams,
                params);
    }

    /**
     * Call static object method.
     *
     * @param methodName the method name
     * @param clazz      the class
     * @param params     the params
     * @return the object
     */
    public static <E> E callStaticObjectMethod(String methodName,
            Class clazz, Object... params) {
        return callStaticObjectMethod(methodName, clazz,
                getClassParams(params), params);
    }

    /**
     * Get class params.
     *
     * @param params the params
     * @return the class [ ]
     */
    public static Class[] getClassParams(Object[] params) {
        Class[] classParams = new Class[params.length];
        for (int i = 0; i < classParams.length; i++) {
            classParams[i] = params[i].getClass();
        }
        return classParams;
    }

    /**
     * Call object method.
     *
     * @param methodName  the method name
     * @param obj         the obj
     * @param clazz       the class
     * @param classParams the class params
     * @param params      the params
     * @return the object
     */
    public static <E> E callObjectMethod(String methodName, Object obj,
            Class clazz, Class[] classParams, Object[] params) {
        Method m = null;
        try {
            m = clazz.getDeclaredMethod(methodName, classParams);
            m.setAccessible(true);
            return (E) m.invoke(obj, params);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * Call object method.
     *
     * @param methodName the method name
     * @param obj        the obj
     * @param clazz      the class
     * @param params     the params
     * @return the object
     */
    public static <E> E callObjectMethod(String methodName, Object obj,
            Class clazz, Object... params) {
        return callObjectMethod(methodName, obj, clazz,
                getClassParams(params), params);
    }

    /**
     * Call object method.
     *
     * @param methodName  the method name
     * @param obj         the obj
     * @param classParams the class params
     * @param params      the params
     * @return the object
     */
    public static <E> E callObjectMethod(String methodName, Object obj,
            Class[] classParams, Object[] params) {
        return callObjectMethod(methodName, obj, obj.getClass(),
                classParams, params);
    }

    /**
     * Call object method.
     *
     * @param methodName the method name
     * @param obj        the obj
     * @param params     the params
     * @return the object
     */
    public static <E> E callObjectMethod(String methodName, Object obj,
            Object... params) {
        return callObjectMethod(methodName, obj, getClassParams(params),
                params);
    }
}

Related Tutorials