Java Reflection Method Name getMethodByName(Class cls, String methodName)

Here you can find the source of getMethodByName(Class cls, String methodName)

Description

Find that one method.

License

Open Source License

Parameter

Parameter Description
cls the class to scan
methodName the method to find

Exception

Parameter Description
NoSuchMethodException method can't be found
RuntimeExceptionmultiple methods found

Return

the method

Declaration

public static Method getMethodByName(Class<?> cls, String methodName) throws NoSuchMethodException 

Method Source Code


//package com.java2s;
/*//from   w ww.  j a v a 2s  . c  om
 * JBoss, Home of Professional Open Source.
 * Copyright 2013, Red Hat, Inc., and individual contributors
 * as indicated by the @author tags. See the copyright.txt file in the
 * distribution for a full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class Main {
    /**
     * Find that one method.
     *
     * @param cls        the class to scan
     * @param methodName the method to find
     * @return the method
     * @throws NoSuchMethodException method can't be found
     * @throws RuntimeException      multiple methods found
     */
    public static Method getMethodByName(Class<?> cls, String methodName) throws NoSuchMethodException {
        List<Method> methods = getMethodsByName(cls, methodName);
        if (methods.size() == 0) {
            throw new NoSuchMethodException(methodName + " on " + cls);
        }
        if (methods.size() > 1) {
            throw new RuntimeException("Doh! Too many methods named " + methodName + " on " + cls);
        }
        return methods.get(0);
    }

    /**
     * Find all methods with a specific name on a class regardless
     * of parameter signature.
     *
     * @param cls        the class to scan
     * @param methodName the name of the methods to find
     * @return a list of methods found, or empty
     */
    public static List<Method> getMethodsByName(Class<?> cls, String methodName) {
        List<Method> methods = new ArrayList<Method>();
        for (Method method : cls.getDeclaredMethods()) {
            if (method.getName().equals(methodName)) {
                methods.add(method);
            }
        }
        return methods;
    }
}

Related

  1. getMethodByName(Class clazz, String methodName)
  2. getMethodByName(Class aClass, String methodName, Class... params)
  3. getMethodByName(Class clazz, String methodName)
  4. getMethodByName(Class clazz, String methodName)
  5. getMethodByName(Class clazz, String name)
  6. getMethodByName(Class type, String methodName)
  7. getMethodByName(final Class cls, final String action)
  8. getMethodByNameFromArray(Method[] methods, String methodName)
  9. getMethodByNameSimple(Class clz, String methodName)