我有一堂课
ServiceImpl
这不利于界面
Service
我在另一个要调用的jar中有一个方法,但这需要
Service
作为输入。方法如下:
public void setService(Service service) {
context.setService(service);
}
我试图使用反射来调用此方法
final ServiceImpl myService = new ServiceImpl(param1, param2);
method = beanClass.getMethod("setService",Service.class);
method.invoke("setService", myService);
但是我得到了错误:
Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class
据说它期望有一个Service类,但是我传入了ServiceImpl类型的对象。但是,既然ServiceImpl实现了Service,那为什么会是一个问题呢?我该如何解决?
最佳答案
反射所抱怨的不是Service
参数,它是第一个参数。有效地,您的代码尝试执行此操作:
"setService".setService(myService);
由于明显的原因而无法正常工作。
将要在其中设置服务的对象作为第一个参数传递以解决此问题:
method.invoke(instanceOfBeanClass, myService);