集册 Java实例教程 调用静态字节方法。

调用静态字节方法。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

400
调用静态字节方法。
//nowjava.com - 时代Java 提 供

/*

 * 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.nowjava;


import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;


public class Main {

    /**

     * Call static byte method.

     *

     * @param methodName  the method name

     * @param clazz       the class

     * @param classParams the class params

     * @param params      the params

     * @return the byte

     */

    public static byte callStaticByteMethod(String methodName, Class clazz,

            Class[] classParams, Object[] params) {

        return (Byte) callStaticObjectMethod(methodName, clazz,

                classParams, params);

    }


    /**

     * Call static byte method.

     *

     * @param methodName the method name

     * @param clazz      the class

     * @param params     the params

     * @return the byte

     */

    public static byte callStaticByteMethod(String methodName, Class clazz,
    /* 
     来自 
    *n o w j a v a . c o m*/

            Object... params) {

        return callStaticByteMethod(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);

    }


    
展开阅读全文