Java Reflection Method Parameter getMethod(final Class clazz, final String name, final Class... parametertypes)

Here you can find the source of getMethod(final Class clazz, final String name, final Class... parametertypes)

Description

Get a method by name.

License

Open Source License

Declaration

public static Method getMethod(final Class<?> clazz, final String name, final Class<?>... parametertypes)
        throws NoSuchMethodException 

Method Source Code


//package com.java2s;
/*/*from  w  w  w .  j  a  v  a  2  s.  c o m*/
 *
 *  * Copyright (c) 2014- MHISoft LLC and/or its affiliates. All rights reserved.
 *  * Licensed to MHISoft LLC under one or more contributor
 *  * license agreements. See the NOTICE file distributed with
 *  * this work for additional information regarding copyright
 *  * ownership. MHISoft LLC licenses this file to you under
 *  * the Apache License, Version 2.0 (the "License"); you may
 *  * not use this file except in compliance with the License.
 *  * You may obtain a copy of the License at
 *  *
 *  *    http://www.apache.org/licenses/LICENSE-2.0
 *  *
 *  * Unless required by applicable law or agreed to in writing,
 *  * software distributed under the License is distributed on an
 *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  * KIND, either express or implied.  See the License for the
 *  * specific language governing permissions and limitations
 *  * under the License.
 *  
 *
 */

import java.util.ArrayList;
import java.util.Arrays;

import java.util.List;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class Main {
    /**
     * Get a method by name.
     */
    public static Method getMethod(final Class<?> clazz, final String name, final Class<?>... parametertypes)
            throws NoSuchMethodException {
        Method result = null;
        for (final Method method : getMethods(clazz)) {
            if (method.getName().equals(name) && Arrays.equals(method.getParameterTypes(), parametertypes)) {
                result = method;
                break;
            }
        }
        if (result == null)
            throw new NoSuchMethodException(name);

        return result;
    }

    /**
     * List of all the methods of the class, and all of its superclasses.
     * NOTE: This returns the most common kind of methods which by default excludes
     * {@link Modifier#STATIC} methods.
     */
    public static List<Method> getMethods(final Class<?> clazz) {
        return getMethods(clazz, Modifier.STATIC);
    }

    /**
     * List of all the methods of the class and all of its superclasses.
     */
    public static List<Method> getMethods(final Class<?> clazz, final int excludedModifiers) {
        final ArrayList<Method> result = new ArrayList<Method>();
        for (Class<?> c = clazz; c != null; c = c.getSuperclass()) {
            final List<Method> methods = getDeclaredMethods(c, 0, excludedModifiers);
            result.addAll(0, methods);
        }
        return result;
    }

    /**
     * List of all the methods of the class (not its superclasses).
     */
    private static List<Method> getDeclaredMethods(final Class<?> clazz, final int includedModifiers,
            final int excludedModifiers) {
        final List<Method> result = new ArrayList<Method>();
        for (final Method m : clazz.getDeclaredMethods()) {
            final int methodModifiers = m.getModifiers();
            if (includedModifiers != 0 && ((methodModifiers & includedModifiers) == 0))
                continue;
            if ((methodModifiers & excludedModifiers) == 0)
                result.add(m);
        }
        return result;
    }
}

Related

  1. getMethod(Class clazz, String methodName, Class[] parameterTypes)
  2. getMethod(final Class clazz, final String name, final Class... parameterTypes)
  3. getMethod(final Class javaClass, final String methodName, final Class[] methodParameterTypes, final boolean shouldSetAccessible)
  4. getMethod(final Class aClass, final String methodName, Class[] parameterTypes)
  5. getMethod(final Class clazz, final String methodName, final Class... parameterTypes)
  6. getMethod(final Class clazz, final String name, final Class... parameterTypes)
  7. getMethod(final Class target, final String name, final Class... parameters)
  8. getMethod(final Class receiver, final String methodName, final Class... parameterTypes)
  9. getMethod(final Field visitee, final String methodName, final Class... parameterTypes)