Réponses:
Utilisez Modifier.isStatic(method.getModifiers()).
/**
 * Returns the public static methods of a class or interface,
 *   including those declared in super classes and interfaces.
 */
public static List<Method> getStaticMethods(Class<?> clazz) {
    List<Method> methods = new ArrayList<Method>();
    for (Method method : clazz.getMethods()) {
        if (Modifier.isStatic(method.getModifiers())) {
            methods.add(method);
        }
    }
    return Collections.unmodifiableList(methods);
}
Remarque: cette méthode est en fait dangereuse du point de vue de la sécurité. Class.getMethods "contourner [es] les vérifications de SecurityManager en fonction du chargeur de classe de l'appelant immédiat" (voir la section 6 des directives de codage sécurisé Java).
Avertissement: non testé ni même compilé.
La note Modifierdoit être utilisée avec précaution. Les indicateurs représentés par des entiers ne sont pas de type sûr. Une erreur courante consiste à tester un indicateur de modificateur sur un type d'objet de réflexion auquel il ne s'applique pas. Il se peut qu'un drapeau à la même position soit positionné pour indiquer d'autres informations.
Vous pouvez obtenir les méthodes statiques comme ceci:
for (Method m : MyClass.class.getMethods()) {
   if (Modifier.isStatic(m.getModifiers()))
      System.out.println("Static Method: " + m.getName());
}
              Pour étoffer la réponse précédente (correcte), voici un extrait de code complet qui fait ce que vous voulez (exceptions ignorées):
public Method[] getStatics(Class<?> c) {
    Method[] all = c.getDeclaredMethods()
    List<Method> back = new ArrayList<Method>();
    for (Method m : all) {
        if (Modifier.isStatic(m.getModifiers())) {
            back.add(m);
        }
    }
    return back.toArray(new Method[back.size()]);
}