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

因此,可以说我正在尝试使用从类中获取方法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();

}

以上是 使用.getDeclaredMethod从类中扩展另一个方法 的全部内容, 来源链接: utcz.com/qa/403366.html

回到顶部