سؤال

نظرا لأنه يتم فحص الأردن فقط خلال وقت ترجمة مع Java 5، فهل يمكنهم تجنب تصورات الفصل الدراسية في جميع المواقف؟

هل كانت مفيدة؟

المحلول

بادئ ذي بدء، يجب عليك التأكد من أن الكود الخاص بك يجمع دون تحذيرات غير مشكومة. هذا مؤشر جيد. لفهم السبب، أقترح عليك إلقاء نظرة على عينة الفصل للأرداء من جافا فعالة.

الثاني من كل شيء، لا يمكن للأرداء حراسة لك من التعليمات البرمجية مثل:

public void methodOne(Integer argument)  {
     methodTwo(argument);
} 

public void methodTwo(Object argument) {
     System.out.println(((Date) argument).getTime());
}

ثالثا من كل شيء، إذا كنت بطريقة أو بأخرى العبث مع لوادر فئة، فقد تشعر بالغرابة ClassCastExceptions, ، مثلما في هذا الموضوع المناقشة. وبعد إنه عقل الذهن لرؤيته

java.lang.classcastexception: javax.mail.session لا يمكن أن يلقي إلى javax.mail.session

وبالتالي فإن الجواب هو لا، لا يمكنك التخلص من ClassCastExceptionS فقط باستخدام الأجداد بشكل صحيح.

نصائح أخرى

تضمن "الحديد الزهر" أن Java 5 Generics يوفر هو أنك لن ترى أبدا ككلاسكاستساس من المصابيح التي أدخلها المحول البرمجي قدمت أن تجميع أنتج لا تحذيرات "غير مرفوعة".

في الحياة الحقيقية، غالبا ما لا تستطيع تجنب التحذيرات غير المعرفة إذا كان الرمز يستخدم المكتبات القديمة (غير المستدادة). ثم يلقي المترجم المترجم تستطيع رمي ClasscastException، وهي وظيفتك لمنع ذلك من خلال ضمان كتابة القيم التي تم إرجاعها بواسطة رمز المكتبة جيدا لإعلاناتك.

وإلا فإن الوضع لم يتغير. خارج الجنراء، إذا قمت بإلقاء الضوء على نوع غير متوافق، فستحصل على ClasscastException بنفس الطريقة التي قمت بها دائما.

(مرجع جيد لهذا وغيرها من الأسئلة الأساسية جافا الجنراء والمجموعات.)

لا، لا يجعلك نوع Java 5.0 و Generency Cynics.

لا. Generics فقط يوفر لك من أخطاء وقت الترجمة، وليس استثناءات وقت التشغيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top