ما هو معنى من نوع الإنذار السلامة في بعض الأدوية جافا يلقي?

StackOverflow https://stackoverflow.com/questions/382

سؤال

ما هو معنى جافا تحذير?

نوع الأمان:المدلى بها من كائن إلى قائمة<Integer> هو في الواقع فحص ضد تمحى نوع القائمة

يمكنني الحصول على هذا التحذير عند محاولة يلقي كائن إلى نوع مع معلومات عامة ، كما في التعليمات البرمجية التالية:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;
هل كانت مفيدة؟

المحلول

هذا التحذير هو هناك لأن جافا ليست في الواقع تخزين معلومات نوع وقت التشغيل في كائن يستخدم الأدوية.وهكذا ، إذا كان object هو في الواقع List<String>, لن يكون هناك ClassCastException في وقت التشغيل إلا إلى عنصر يتم الوصول إليها من القائمة التي لا يطابق نوع عام المحددة في متغير.

هذا يمكن أن يسبب مضاعفات أخرى إذا تم إضافة عناصر إلى القائمة ، مع هذه النوعية غير صحيحة نوع المعلومات.أي رمز لا يزال يحمل إشارة إلى قائمة ولكن الصحيح العامة نوع المعلومات الآن غير متناسقة قائمة.

إزالة الإنذار محاولة:

List<?> list = (List<?>) object;

لاحظ أنك لن تكون قادرا على استخدام أساليب معينة مثل إضافة لأن المترجم لا أعرف إذا كنت تحاول إضافة كائن من نوع غير صحيح.سبق العمل في الكثير من الحالات, ولكن إذا كان لديك إلى استخدام إضافة أو بعض وبالمثل المقيدة الطريقة, سيكون لديك فقط يعانون الأصفر نؤكد في الكسوف (أو SuppressWarning الشرح).

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