سؤال

حاولت شيئًا كهذا:


boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};

لكن هذا الرمز لن يجمع. هل هناك أي تفسير لهذا؟ ليس funkyBoolean ? {1,2,3} : {4,5,6} تعبير صحيح؟ شكرا لك مقدما!

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

المحلول

يمكنك فقط استخدام {1, 2, 3} بناء الجملة في مواقف محدودة للغاية ، وهذا ليس أحدها. جرب هذا:

int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};

بالمناسبة ، أسلوب جافا الجيد هو كتابة الإعلان على النحو التالي:

int[] array = ...

تحرير: للسجل ، سبب ذلك {1, 2, 3} مقيد جدًا أن نوعه غامض. من الناحية النظرية ، يمكن أن تكون مجموعة من الأعداد الصحيحة ، الطويلة ، العوامات ، إلخ. إلى جانب ذلك ، تحظر ذلك قواعد جافا كما هو محدد من قبل JLS ، وهذا هو ذلك.

نصائح أخرى

boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};

قد يتم تحديد مُعمى الصفيف في إعلان ، أو كجزء من تعبير إنشاء الصفيف (§15.10) ، إنشاء صفيف وتوفير بعض القيم الأولية

هذا ما جافا المواصفات يقول (10.6). لذا فإن الإصدار "القصير" (مع تعبير الإنشاء) مسموح به فقط في الإعلانات (int[] a = {1,2,3};) ، في جميع الحالات الأخرى تحتاج إلى new int[]{1,2,3} بناء ، إذا كنت ترغب في استخدام التهيئة.

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