Javaリフレクションを使用してクラスのパブリックメソッドのみを取得する 質問する

Javaリフレクションを使用してクラスのパブリックメソッドのみを取得する 質問する

私はリフレクションを使って、クラス内で明示的に宣言されているすべてのパブリックメソッドを取得しようとしています(c.getMethods()スーパークラスのメソッドも取得するのでうまくいきません)。

Method[] allMethods = c.getDeclaredMethods();

そのクラスからメソッドを取得したいのですが、パブリックなものだけを使用したいのです。

この時点で、修飾子を取得し、これに基づいて特定のアクションを実行しようとしていますが、何らかの理由で、デバッガーに表示される修飾子の値と修飾子の値の出力が同じではありません。たとえば、デバッガーではgetNode「修飾子」の値が と表示されますが、を実行するとと出力されます。奇妙です。パブリック メソッドだけを取得する別の方法がありますか、それとも明らかなことを見落としていますか? ご協力ありがとうございます!2"1"System.out.println(c.getModifiers())

ベストアンサー1

どのように使っているか分かりませんModifier、しかし、これがその使用法です

Method[] allMethods = Test.class.getDeclaredMethods();
for (Method method : allMethods) {
    if (Modifier.isPublic(method.getModifiers())) {
        System.out.println(method);
        // use the method
    }
}

おすすめ記事