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

使用.getDeclaredMethod从类中扩展另一个方法

郜俊健
2023-03-14
问题内容

因此,可以说我正在尝试使用从类中获取方法Method m = plugin.getClass().getDeclaredMethod("getFile");

但是plugin该类正在扩展另一类,即带有getFile方法的类。我不太确定这是否会使它抛出NoSuchMethodException异常。

我知道plugin正在扩展的类具有getFile方法。对不起,如果我听起来混乱,有点累。


问题答案:

听起来您只需要使用getMethod而不是即可getDeclaredMethod。整个要点getDeclaredMethod是,它
查找在您要对其调用的类中声明的方法:

返回一个Method对象,该对象反映此Class对象表示的类或接口的指定声明方法。

鉴于getMethod

在C中搜索任何匹配方法。如果未找到匹配方法,则对C的超类递归调用步骤1的算法。

那只会找到 公共
方法。如果您使用的方法不是公开的,则应使用getDeclaredMethod或递归层次结构中的getDeclaredMethods每个类,自行递归该类层次结构:

Class<?> clazz = plugin.getClass();
while (clazz != null) {
    Method[] methods = clazz.getDeclaredMethods();
    for (Method method : methods) {
        // Test any other things about it beyond the name...
        if (method.getName().equals("getFile") && ...) {
            return method;
        }
    }
    clazz = clazz.getSuperclass();
}


 类似资料:
  • 我正在Eclipse中用Java编写一个程序。我有两个从超级类ViewPart扩展的类。现在我只想自动打开其中一个类(这意味着当我运行程序时),另一个类应该通过第一个类的UI上的按钮打开。但我不知道如何手动打开ViewPart类。 我现在试过了

  • 问题内容: 我正在学习Java,并且希望将自己的课堂变成可观察的课堂。 但是我已经有了它扩展了另一个类。 我该怎么办? 问题答案: 我建议避免完全使用该类,而应 定义事件特定的侦听器和相应的事件定义 。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。 强制您使用它来表示事件,然后使用来检查事件类型,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看j

  • 使用java和testNG,我在两个不同的类test1.class和test2.class中有两个测试,还有一个包含大多数方法的base.class:

  • 问题内容: 如何将一个Java文件包含到另一个Java文件中? 例如:如果我有2个Java文件,则调用一个,然后调用一个。我怎么能包括成这样我可以从扩展类的 问题答案: 只需将两个文件放在同一目录中即可。这是一个例子: 人.java 学生.java 运行Student(因为它具有主要功能)会为我们带来所需的结果:

  • Java,我们可以从另一个类调用main()方法吗?例如,ClassA应该在命令行上运行,因为它定义了main(String[]args)方法。 我想把这个叫做ClassA,在ClassB里面。是否初始化类的新对象,如 或者是否有一种方法可以在ClassB中传递ClassA的命令行选项。 谢啦

  • 问题内容: 在Python中,有没有一种方法可以从另一个类中调用一个类方法?我正在尝试在Python中旋转自己的MVC框架,但无法弄清楚如何从另一个类的一个类调用方法。 这是我想发生的事情: 我正在从PHP慢慢进入Python,因此我正在寻找与PHP等效的Python 。 问题答案: 更新:刚刚在您的帖子中看到了对它的引用。那不一样。用于获取函数对象,然后使用您的参数调用它 现在是一个实际的函数对