2012-09-24 27 views
0

任何想法?method.invoke - java.lang.RuntimeException:java.lang.IllegalArgumentException:對象不是聲明類的實例

當試圖調用一個對象時出現錯誤。

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); 
    } 
} 

我覺得這就夠了,但還是錯誤,任何人嗎?

回答

1

它說的是entity是不是類entityClazz。當你通過反射呼叫setter.invoke它當然期望它是該類的一個對象。

嘗試輸出entity.getClass()entityClazz並查看它們是否相同或至少entityClazzentity.getClass()的父項。

相關問題