如何在运行时检查 Java 中的方法是否为公共方法

Bre*_*lum 2 java

要显示该类的所有方法(其名称是在运行时通过用户输入以字符串形式输入的),我执行以下操作:

// String s is the class name entered

if (Class.forName(s).getDeclaredMethods().length > 0) {
    for (int i = 0; i < Class.forName(s).getDeclaredMethods().length; i++) {
            System.out.println(Class.forName(s).getDeclaredMethods()[i].toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我只需要显示公共方法,我应该添加什么?

Rah*_*thi 6

你可以这样试试:

if (Modifier.isPublic(method.getModifiers())) 
{
    //Yes the method is PUBLIC         
}
Run Code Online (Sandbox Code Playgroud)

参考getModifier

以整数形式返回此 Method 对象表示的方法的 Java 语言修饰符。Modifier 类应该用于解码修饰符。


Pet*_*rey 5

我可能会这样写。

for (Method m : Class.forName(s).getDeclaredMethods()) {
    boolean isPublic = (m.getModifiers() & Modifier.PUBLIC) != 0;
    System.out.println(m + " isPublic: " + isPublic);
}
Run Code Online (Sandbox Code Playgroud)