当前位置: 首页 > 面试题库 >

使用Java反射仅获取类的公共方法

皇甫展
2023-03-14
问题内容

我正在尝试使用反射来获取在类中显式声明的所有公共方法(因此c.getMethods()将无法工作,因为它也可以获取超类方法)。我可以用

Method[] allMethods = c.getDeclaredMethods();

只能从该类中获取方法,但是我只想使用公共方法。

在这一点上,我试图抓住修饰符并据此执行某些操作,但是由于某些原因,调试器中显示的修饰符值与修饰符值输出不同。例如,我有一个私有getNode方法,尽管“
modifiers”值2在调试器中显示,但在输出"1"时却显示System.out.println(c.getModifiers())。奇怪的。还有另一种获取公共方法的方法,还是我缺少明显的东西?谢谢你的帮助!


问题答案:

我不知道您的使用方式Modifier,但这就是使用方式

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


 类似资料:
  • 本文向大家介绍java反射之获取类的信息方法(推荐),包括了java反射之获取类的信息方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 本文接上文“老生常谈反射之Class类的使用(必看篇)”,以编写一个用来获取类的信息(成员函数、成员变量、构造函数)的工具类来讲解"反射之获取类的信息" 1、获取成员函数信息 2、获取成员变量信息 3、获取构造函数信息 4、工具类代码 以上这篇java反射之获

  • 问题内容: 是否可以获取通用参数的类型? 一个例子: 问题答案: 我曾经偶然发现的一种结构看起来像 因此,似乎有些不可思议的想法使我感到遗憾,我很不了解…对不起。

  • 问题内容: 我需要使用反射从另一个主要方法调用Java类的主要方法。 必须使用反射,以消除被调用主类的编译时依赖性。直截了当的方法并没有产生效果,因为它只识别“公共”和“非静态”方法。有什么建议吗? 问题答案: 不应比调用任何其他函数更复杂: 但是我真的看不到有什么用途,只要您不使用特定的代码路径,就可以买到该程序,而无需链接另一个程序,这是它唯一能为您带来的好处,但是如果这是您需要的,在这里走

  • 基本上,我的要求是通过使用反射来获取超类对象,以便获得字段名及其值。 所以,我有一门课 现在我正在使用 当我尝试使用以下代码访问该字段时,它会给我java.lang.Class类的类型。 它让我异常 有人能帮助我如何将其转换为对象,以便我可以访问文件夹

  • 例如,我有一个stacktrace: 调用 方法a()- 在我的示例中,ClassC: method C()用@Cacheable注释。我需要在ClassFinal: Method odD()中得到这个注释,如下所示: 我已经使用反射做到了这一点,但它不适用于过载: 我的程序的真正堆栈: Teste。a(Teste.java:14)以@cacable 标记,我需要在sendGet(Abstract

  • 我读了一大堆这么多的问题,但我似乎找不到答案。 我有以下课程: 在其他地方,我试图访问这些字符串: 为什么我会得到一个IllegalAccess异常?如果我删除field.get行,我可以在LogCat中看到以下行: 参考资料: 使用反射在Java中获取成员变量值的陷阱 反射:通过反射加载的类中的常量变量 通过反射访问Java静态最终ivar值