2015-10-08 4 views
0

Что мне здесь не хватает?Reflection invoke throws IllegalArgumentException

я получаю исключение: java.lang.IllegalArgumentException: объект не является экземпляром того, чтобы объявить класс

public boolean onSave(Object entity,Serializable id,Object[] state, String[] propertyNames, Type[] types) { 
    Class<?> clazz=entity.getClass(); 
    System.out.println(" Clazzz is:"+clazz); 
    Method[] methods = clazz.getMethods(); 

     for(Method method : methods){ 
      if(method.getName().startsWith("get") && String.class.equals(method.getReturnType())){ 
       System.out.println("getter: " + method); 

       try { 
        String s=(String) method.invoke(clazz,(Object[]) null); //java.lang.IllegalArgumentException: object is not an instance of declaring class 
        System.out.println(" value in s is:"+s); 
       } catch (IllegalAccessException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
} 

ответ

3

Вам нужно написать

String s=(String) method.invoke(entity, (Object[]) null); 

Первый параметр Method.invoke является нулевым для статического методы или объект, на который должен быть вызван метод.

+0

Спасибо, тонна брата! – fiddle

Смежные вопросы