ما هو معنى من نوع الإنذار السلامة في بعض الأدوية جافا يلقي?
-
08-06-2019 - |
سؤال
ما هو معنى جافا تحذير?
نوع الأمان:المدلى بها من كائن إلى قائمة<Integer> هو في الواقع فحص ضد تمحى نوع القائمة
يمكنني الحصول على هذا التحذير عند محاولة يلقي كائن إلى نوع مع معلومات عامة ، كما في التعليمات البرمجية التالية:
Object object = getMyList();
List<Integer> list = (List<Integer>) object;
المحلول
هذا التحذير هو هناك لأن جافا ليست في الواقع تخزين معلومات نوع وقت التشغيل في كائن يستخدم الأدوية.وهكذا ، إذا كان object
هو في الواقع List<String>
, لن يكون هناك ClassCastException
في وقت التشغيل إلا إلى عنصر يتم الوصول إليها من القائمة التي لا يطابق نوع عام المحددة في متغير.
هذا يمكن أن يسبب مضاعفات أخرى إذا تم إضافة عناصر إلى القائمة ، مع هذه النوعية غير صحيحة نوع المعلومات.أي رمز لا يزال يحمل إشارة إلى قائمة ولكن الصحيح العامة نوع المعلومات الآن غير متناسقة قائمة.
إزالة الإنذار محاولة:
List<?> list = (List<?>) object;
لاحظ أنك لن تكون قادرا على استخدام أساليب معينة مثل إضافة لأن المترجم لا أعرف إذا كنت تحاول إضافة كائن من نوع غير صحيح.سبق العمل في الكثير من الحالات, ولكن إذا كان لديك إلى استخدام إضافة أو بعض وبالمثل المقيدة الطريقة, سيكون لديك فقط يعانون الأصفر نؤكد في الكسوف (أو SuppressWarning
الشرح).