Versão curta: você está perdendo o primeiro argumento em sua chamada para invoke
.
Versão longa: você está ligando
Method method = DoerDAO.class.getDeclaredMethod(requestedUser,
Dossier.class,
SessionFactory.class);
Digamos que o valor de requestedUser
é getReviewerOneDetail
, então você procuraria o método
getReviewerOneDetail(Dossier arg0, SessionFactory arg1)
Em seguida, você liga
method.invoke(dossierDetail.get(0), sessionFactory);
o Javadoc Estados que invocam o primeiro parâmetro da instância (!) da classe para chamar o método e, como segundo, terceiro, ... parâmetros os parâmetros reais para sua invocação.
Então, o que você realmente tentando chamar em seu código é
dossierDetail.get(0).getReviewerOneDetail(sessionFactory);
que não corresponde à assinatura do método (1 parâmetro vs. 2 parâmetros), nem o tipo de instância no qual o método é chamado (Dossier
ao invés de DoerDAO
).
Porque você adquire o Method
de DoerDAO
Aula, eu acho que o que você pretendia escrever lá foi realmente:
method.invoke(doerDao, dossierDetail.get(0), sessionFactory);
Isso se traduziria em
doerDao.getReviewerOneDetail(dossierDetail.get(0), sessionFactory);