Source Code : Search Method

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Search Method

      
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

public abstract class ClassUtils {

  static public Method searchMethod(Method[] methods, String methodName,
      Class<?>... paramType) {
    if (methods == null || methods.length == 0)
      return null;
    for (Method method : methods) {
      Class<?>[] m = method.getParameterTypes();
      if (methods.length == 1 && m.length == 0) {
        return method;
      } else if (m.length == paramType.length) {
        for (int i = 0; i < paramType.length; i++) {
          if (m[i].equals(paramType[i])) {
            return method;
          }
        }
      }
    }
    return null;
  }

  static public <T> Method getMethod(Class<T> type, String methodName,
      Class<?>... params) {
    if (type != null && methodName != null && methodName.length() > 0) {
      try {
        if (params != null && params.length > 0 && params[0] != null) {
          return type.getMethod(methodName, params);
        } else {
          return type.getMethod(methodName);
        }
      } catch (NoSuchMethodException e) {
      }
    }
    return null;
  }

  static Set<Class<?>> getAllClasses(Set<Class<?>> classes, Class<?> type) {
    Class<?>[] list = type.getClasses();
    for (Class<?> t : list) {
      classes = getAllClasses(classes, t);
      classes.add(t);
    }
    Class<?>[] interfaces = type.getInterfaces();
    for (Class<?> t : interfaces) {
      classes = getAllClasses(classes, t);
      classes.add(t);
    }
    Class<?> superClass = type.getSuperclass();
    if (superClass != null && superClass != Object.class) {
      Set<Class<?>> superClasses = getAllClasses(classes, superClass);
      for (Class<?> t : superClasses) {
        classes = getAllClasses(classes, t);
        classes.add(t);
      }
    }
    return classes;
  }

  static public Method searchMethod(Class<?> type, String methodName,
      Class<?>... paramType) {
    Method m = paramType.length > 0 && paramType[0] != null ? getMethod(
        type, methodName, paramType) : getMethod(type, methodName);
    if (m != null)
      return m;
    // paramType is interface?
    if (paramType != null && paramType.length > 0 && paramType[0] != null) {
      Set<Class<?>> p = getAllClasses(new HashSet<Class<?>>(),
          paramType[0]);
      // Class<?>[] p = paramType[0].getDeclaredClasses();
      if (p != null) {
        for (Class<?> refIF : p) {
          m = getMethod(type, methodName, refIF);
          if (m != null)
            return m;
        }
      }
      // paramType is Object.class
      Class<?>[] argsType = new Class<?>[paramType.length];
      for (int i = 0; i < paramType.length; i++) {
        argsType[i] = Object.class;
      }
      m = getMethod(type, methodName, argsType);
    }
    return m;
  }

}

   
    
    
    
    
    
  

Thank with us