Here you can find the source of getMethod(final Class> clazz, final String name, final Class>... parametertypes)
public static Method getMethod(final Class<?> clazz, final String name, final Class<?>... parametertypes) throws NoSuchMethodException
//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; } }