لماذا تصاعد الصفائف. اتخذ كائن [] بدلا من القابلة للمقارنة []؟

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

سؤال

كنت أتساءل لماذا يطلب طريقة الفرز من فئة صفيفات مع معلمة كائن من النوع []. لماذا المعلمة ليست ذات النوع القابل للمقارنة []. إذا كنت لا تمر قابلة للمقارنة [] فهي توليد كلاسكاستكساس.

لماذا ... فرز الفراغ الثابت العام (كائن [ و لا فرز الفراغ الثابت العام (قابلة للمقارنة [] أ) ب شكرًا

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

المحلول

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

يمكنك ان تفعل:

Object[] arr = new String[0];
String[] sarr = (String[]) arr;

لكن لا يمكنك القيام به:

Object[] arr = new Object[0];
String[] sarr = (String[]) arr;

لذلك فمن الأمثل المبكر :)

نصائح أخرى

خلاف ذلك لا يمكنك المرور Object[] في.

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