我有一个类似的设置。当我尝试使用java Reflections调用execRequest方法时,并且在parameterArray中传递子类实例,该子类实例是DelRequest我得到一个NoSuchMethodFound异常
DelRequest delReq=new DelRequest();
delReq.setMsg("something");
Request req=(Request) delReq;
我有一些服务方法,然后最终调用以下代码行。请注意,这一次我通过req超类实例,因为它被定义为方法签名公共字符串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*/
}
}
Reflection API要求使用已声明的参数类型。因此,即使您可以用DelRequest
调用execRequest
,也需要使用Request.class
作为getMethod
的参数。
parameterTypes
参数是Class
对象的数组按照声明的顺序标识方法的形式参数类型。如果parameterTypes
为null,则将其视为空数组。