如何在Java中获取类的所有公共静态方法?

时间:2013-09-08 14:55:06

标签: java

clazz.getDeclaredMethods()将返回所有方法,但我只想要那些public static方法,我该如何制作呢?

3 个答案:

答案 0 :(得分:5)

getModifiers对象上调用Method后,您需要查看Modifier课程

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等修饰符的特定位位置信息。

答案 1 :(得分:1)

你应该迭代返回的方法并检查getModifiers()方法。 如果它返回STATIC。

javadoc

中的更多信息

答案 2 :(得分: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);

}