簡體   English   中英

如何獲取Java類的所有公共靜態方法?

[英]How do I get all public static methods of a class in Java?

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

在對Method對象調用getModifiers之后,需要檢查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等修飾符的特定位位置保存信息。

您應該遍歷返回的方法並檢查getModifiers()方法。 是否返回STATIC。

javadoc中的更多信息

嘗試使用:

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM