لماذا تصاعد الصفائف. اتخذ كائن [] بدلا من القابلة للمقارنة []؟
-
20-09-2019 - |
سؤال
كنت أتساءل لماذا يطلب طريقة الفرز من فئة صفيفات مع معلمة كائن من النوع []. لماذا المعلمة ليست ذات النوع القابل للمقارنة []. إذا كنت لا تمر قابلة للمقارنة [] فهي توليد كلاسكاستكساس.
لماذا ... فرز الفراغ الثابت العام (كائن [ و لا فرز الفراغ الثابت العام (قابلة للمقارنة [] أ) ب شكرًا
المحلول
لأن النموذج الثاني سيتطلب إعادة تخصيص الصفيف. حتى إذا كنت تعرف أن صفيفك يحتوي على مقارنة فقط، فلن تتمكن من إلقاء ذلك فقط على قابلة للمقارنة [] إذا كان النوع الأصلي كان كائن []، نظرا لأن نوع الصفيف غير متطابق.
يمكنك ان تفعل:
Object[] arr = new String[0];
String[] sarr = (String[]) arr;
لكن لا يمكنك القيام به:
Object[] arr = new Object[0];
String[] sarr = (String[]) arr;
لذلك فمن الأمثل المبكر :)
نصائح أخرى
خلاف ذلك لا يمكنك المرور Object[]
في.
لا تنتمي إلى StackOverflow