public static Method findMethod ( Method methodToFind , Class < ? > cls ) { if ( cls == null ) { return null ; } String methodToSearch = methodToFind . getName ( ) ; Class < ? > [ ] soughtForParameterType = methodToFind . getParameterTypes ( ) ; Type [ ] soughtForGenericParameterType = methodToFind . getGenericParameterTypes ( ) ; for ( Method method : cls . getMethods ( ) ) { if ( method . getName ( ) . equals ( methodToSearch ) && method . getReturnType ( ) . isAssignableFrom ( methodToFind . getReturnType ( ) ) ) { Class < ? > [ ] srcParameterTypes = method . getParameterTypes ( ) ; Type [ ] srcGenericParameterTypes = method . getGenericParameterTypes ( ) ; if ( soughtForParameterType . length == srcParameterTypes . length && soughtForGenericParameterType . length == srcGenericParameterTypes . length ) { if ( hasIdenticalParameters ( srcParameterTypes , soughtForParameterType , srcGenericParameterTypes , soughtForGenericParameterType ) ) { return method ; } } } } return null ; }
Searches the method methodToFind in given class cls . If the method is found returns it else return null .