调用静态字节方法。
//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); }