Erro invoke

Estou com um erro

java.lang.IllegalArgumentException: o objeto não é uma instância da classe de declaração

ao chamar o método invoke

  public List<Filtravel> getFiltros(Filter filter) {
    List<Filtravel> filtraveis = new ArrayList<Filtravel>();
    try {
      Class<? extends Filter> clazz = filter.getClass();
      for (Method method : clazz.getDeclaredMethods()) {
        if (method.isAnnotationPresent(MetodoFiltravel.class)) {
          MetodoFiltravel metodo = method.getAnnotation(MetodoFiltravel.class);
          Object valor = method.invoke(clazz, method.getName());
          filtraveis.add(new Filtravel(metodo.filtro(), valor));
        }
      }
    } catch (Exception e) {
      throw new BusinessException("Ocorreu um erro ao invovar um método.", e);
    }
    return filtraveis;
  }

O erro indica que o primeiro argumento que vc passou para o invoke não é uma instância da classe esperada.

Troque isto:

method.invoke(clazz, method.getName())

Por isto:

// Tem que passar a instância, não a classe.
method.invoke(filter, method.getName())

opa, consegui, era isso mesmo, e sem o method.getName()

1 curtida