我有类似的设置。当我尝试使用java Reflections调用 execRequest 方法时,在 parameterArray 中传递的子类实例 DelRequest 我收到NoSuchMethodFound异常
DelRequest delReq=new DelRequest();
delReq.setMsg("something");
Request req=(Request) delReq;
我几乎没有服务方法,最后我调用了以下几行代码。请注意,这次我传递 req 超类实例,因为它定义的是方法签名 public String execRequest(请求请求)
lClass.getMethod( "execRequest", parameterArray)
这是我的基本设置,我错了,是否可以完成
class DelRequest extends Request {
private String msg;
/* getters and setters */
}
class Request {
}
class ExecuteRequest{
public String execRequest(Request request){
/* request do something*/
}
}
答案 0 :(得分:0)
Reflection API要求您使用参数的声明类型。因此,即使您可以使用execRequest
调用DelRequest
,也需要使用Request.class
作为getMethod
的参数。
parameterTypes
参数是Class
个对象的数组 按声明的顺序标识方法的形式参数类型。如果parameterTypes
为空,将其视为空数组。