الهدف من الوكيل الديناميكي هو أنك لا تهتم بالفئة الفعلية للوكالة التي يتم إرجاعها. أنت فقط تهتم بأنه ينفذ جميع الواجهات المرغوبة والمحددة.
جافادوك ل newProxyInstance
حالة:
عائدات:
مثيل وكيل مع معالج الاحتجاج المحدد لفئة الوكيل التي يتم تعريفها بواسطة محمل الفئة المحدد وتنفيذ الواجهات المحددة
لذا، newProxyInstance
أعاد مثيل com.sun.proxy.$Proxy0
(مهما كان هذا ، نحن لا نهتم حقًا) ، لكنه تأكد أيضًا من أنه MyServelet
. يجب أن تكون قادرًا على إلقاءها على MyServelet
بدون ClassCastException
, ، لان newProxyInstance
أنشأت الفصل لتنفيذ تلك الواجهة ، وقمت بتحديد أنه ينبغي أن يمر بالمرور new Class[]{MyServelet.class}
.
لكي لا يفشل النوع من التقليل ، يجب أن تستنتج جافا جيرلايس ذلك T
هو MyServelet
, ، ليس MyServeletImplementation
. ربما عندما اتصلت instrument
, ، لقد فعلت ذلك مثل هذا:
MyServelet proxy = YourClass.instrument(new MyServeletImplementation());
لذلك كان فريق الممثلين MyServelet
التي يجب أن تنجح ، وليس ل MyServeletImplementation
, ، والتي يجب أن تفشل.