Tooling متوسط

الانتقال من Class.newInstance() إلى انعكاس المُنشئ

استبدل Class.newInstance() المهجورة بالبحث الصريح عن المُنشئ واستدعائه.

✕ Deprecated Class.newInstance()
Plugin plugin = pluginClass.newInstance();
✓ Constructor reflection
Plugin plugin = pluginClass
        .getDeclaredConstructor()
        .newInstance();
هل ترى مشكلة في هذا الكود؟ أخبرنا.

واجهة مدعومة

تزيل استخدام Class.newInstance() المهجورة.

🎯

مُنشئ صريح

يكون التوقيع المطلوب مرئيًا ويمكنه قبول معاملات.

🛡

إخفاقات واضحة

تُمثّل استثناءات المُنشئ عبر InvocationTargetException.

الأسلوب القديم
Class.newInstance()
الأسلوب الحديث
البحث الصريح عن المُنشئ
منذ JDK
9
الصعوبة
متوسط
الانتقال من Class.newInstance() إلى انعكاس المُنشئ
متاح

موصى بها منذ إهمال Class.newInstance() في JDK 9 (سبتمبر 2017).

أُهملت Class.newInstance() لأنها قد تتجاوز التحقق وقت الترجمة من الاستثناءات التي يرميها المُنشئ، ولا تدعم سوى مُنشئ بلا معاملات. يجعل البحث الصريح عن Constructor التوقيع المحدد مرئيًا ويبلّغ عن إخفاقات الاستدعاء الانعكاسي عبر استثناءات الانعكاس المناسبة. تظل قواعد الوحدات والوصول سارية؛ ولا يوصي هذا النمط بتجاوز التغليف.