1

clazz.getDeclaredMethods()将返回所有方法,但我只想要那些public static方法,我该怎么做?

4

3 回答 3

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的特定位位置。staticpublic

于 2013-09-08T14:58:24.800 回答
1

您应该遍历返回的方法并检查 getModifiers() 方法。如果它返回 STATIC 与否。

更多信息在javadoc

于 2013-09-08T14:58:13.923 回答
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);

}
于 2013-09-08T15:01:18.517 回答