我可以把一个子类实例传递给一个接受超类实例的方法吗



我有一个类似的设置。当我尝试使用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,则将其视为空数组。

相关内容

  • 没有找到相关文章

最新更新