Java tutorial
//package com.java2s; //License from project: Apache License import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; public class Main { /** * Returns an array of all methods in a class with the specified parameter types. * * The return type is optional, it will not be compared if it is {@code null}. * Use {@code void.class} if you want to search for methods returning nothing. */ public static Method[] findMethodsByExactParameters(Class<?> clazz, Class<?> returnType, Class<?>... parameterTypes) { List<Method> result = new LinkedList<Method>(); for (Method method : clazz.getDeclaredMethods()) { if (returnType != null && returnType != method.getReturnType()) continue; Class<?>[] methodParameterTypes = method.getParameterTypes(); if (parameterTypes.length != methodParameterTypes.length) continue; boolean match = true; for (int i = 0; i < parameterTypes.length; i++) { if (parameterTypes[i] != methodParameterTypes[i]) { match = false; break; } } if (!match) continue; method.setAccessible(true); result.add(method); } return result.toArray(new Method[result.size()]); } /** * Return an array with the classes of the given objects */ public static Class<?>[] getParameterTypes(Object... args) { Class<?>[] clazzes = new Class<?>[args.length]; for (int i = 0; i < args.length; i++) { clazzes[i] = (args[i] != null) ? args[i].getClass() : null; } return clazzes; } }