نسخة قصيرة: أنت تفتقد الوسيطة الأولى في مكالمتك إلى invoke
.
نسخة طويلة: أنت تتصل
Method method = DoerDAO.class.getDeclaredMethod(requestedUser,
Dossier.class,
SessionFactory.class);
دعنا نقول أن قيمة requestedUser
هو getReviewerOneDetail
, ، ثم تبحث عن الطريقة
getReviewerOneDetail(Dossier arg0, SessionFactory arg1)
التالي تتصل
method.invoke(dossierDetail.get(0), sessionFactory);
ال جافادوك ينص على أن الاستدعاء يحصل على المعلمة الأولى على المثيل (!) للفئة لاستدعاء الطريقة والثانية ، والثالثة ، ... المعلمات المعلمات الفعلية لاستدعاءك.
لذا ، ما تحاول الاتصال به في الكود الخاص بك ، هو
dossierDetail.get(0).getReviewerOneDetail(sessionFactory);
الذي لا يتطابق مع توقيع الطريقة (معلمة 1 مقابل 2 معلمات) ، ولا نوع المثيل الذي تسمى الطريقة (Dossier
بدلاً من DoerDAO
).
لأنك تحصل على Method
من DoerDAO
الفصل ، أعتقد أن ما تنوي الكتابة هناك ، كان في الواقع:
method.invoke(doerDao, dossierDetail.get(0), sessionFactory);
هذا سوف يترجم إلى
doerDao.getReviewerOneDetail(dossierDetail.get(0), sessionFactory);