2013-09-08 6 views

ответ

5

Вы должны проверить с Modifier класса после вызова getModifiers на Method объектах

public static void main(String[] args) throws Exception { //Read user input into the array 
    Method method = Main.class.getDeclaredMethod("main", String[].class); 
    int modifiers = method.getModifiers(); 
    System.out.println(modifiers); 

    System.out.println(Modifier.isStatic(modifiers)); 
    System.out.println(Modifier.isPublic(modifiers)); 
    System.out.println(Modifier.isAbstract(modifiers)); 
} 

печатает

9 
true 
true 
false 

Значение int содержит информацию в конкретном бит для static, public и т. Д. Модификаторы.

1

вы должны перебирать возвращаемые методы и проверять метод getModifiers(). Если он возвращает STATIC или нет.

Более подробная информация в javadoc

1

Попробуйте использовать:

Modifier.isStatic(method.getModifiers()). 

Пример:

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); 

}