Erro invoke

2 respostas
java
X

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

2 Respostas

W

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())
X

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

Criado 15 de junho de 2022
Ultima resposta 15 de jun. de 2022
Respostas 2
Participantes 2