[英]method.invoke - java.lang.RuntimeException: java.lang.IllegalArgumentException: object is not an instance of declaring class
Any idea? 任何想法?
I got an error, when trying to invoke an object. 尝试调用对象时出现错误。
R java.lang.RuntimeException: java.lang.IllegalArgumentException: object is not an instance of declaring class
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.test.corp.name.workflow.changetracking.changeimpl.FieldValueChange.apply(FieldValueChange.java:171)
public void apply(DomainContext context) {
try {
final Class entityClazz = Class.forName(entityClass);
Object entity = context.getEntity( entityClazz, primaryKey);
Object entityChange = context.getChangeEntity(entityClazz, primaryKey);
Method setter = getSetterMethod(entityClazz,fieldName);
if(entity!=null)
setter.invoke(entity, new Object[]{getValue()}); //this line 171
if(entityChange!=null)
setter.invoke(entityChange, new Object[]{getValue()});
}catch(Exception e) {
throw new RuntimeException(e);
}
}
I think this is enough, but still errors, anyone? 我认为这足够了,但是仍然出错,有人吗?
What it says is that entity
is not of the class entityClazz
. 它说的是
entity
不是entityClazz
。 When you call via reflection setter.invoke
it expect an object of that class, of course. 当然,当您通过反射
setter.invoke
调用时,它会期望该类的一个对象。
Try to output entity.getClass()
and entityClazz
and see if they are the same or at least entityClazz
is parent of entity.getClass()
. 尝试输出
entity.getClass()
和entityClazz
,看看它们是否相同或至少entityClazz
是entity.getClass()
父entity.getClass()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.