ضع في اعتبارك الكود التالي: سلسلة خاصة. السلسلة العامة myFormat (تنسيق السلسلة ، كائن ... args) { إرجاع string.format (التنسيق ، outravar ، args) ؛ } } في هذا المثال ، تأخذ طريقة myFormat عددًا متغيرًا من الوسائط (ممثلة بواسطة ... args) وتنسيق سلسلة باستخدام طريقة string.format. القضية هي أن ARGS يتم التعامل معها ككائن واحد [] صفيف ، وليس كوسائط فردية. لمعالجة هذا ، يمكنك الاستفادة من حقيقة أن t ... هو سكر النحوي لـ t []. توضيح ذلك ، يوضح مقتطف الكود التالي كيفية تمرير صفيف كوسائط إلى طريقة arity متغيرة:
سلسلة ثابتة عامة ezformat (Objec تنسيق السلسلة = سلسلة جديدة (new char [args.length]). استبدال ("\ 0" ، "[٪ s]") ؛ إرجاع string.format (التنسيق ، args) ؛ } الفراغ الثابت العام الرئيسي (سلسلة ... args) { System.out.println (EzFormat ("A" ، "B" ، "C")) ؛ // المطبوعات "[a] [b] [c]" }
class A { private String extraVar; public String myFormat(String format, Object... args) { return String.format(format, extraVar, args); } }
مثال:
عدد الفراغ الثابت (كائن ... objs) System.out.println (Objs.length) ؛ } العد (NULL ، NULL ، NULL) ؛ // المطبوعات "3" العد (فارغة ، فارغة) ؛ // المطبوعات "2" العد (خالية) ؛ // يلقي java.lang.nullpointerxception !!! لتجنب ذلك ، يمكنك تمرير الوسيطة الفارغة كصفيف منفصل أو ككائن ، مثل هذا:
العد (كائن جديد [] {null}) ؛ // المطبوعات "1" العد ((كائن) فارغ) ؛ // يطبع "1"
إضافة وسيطات إضافية
public static String ezFormat(Object... args) { String format = new String(new char[args.length]).replace("\0", "[ %s ]"); return String.format(format, args); } public static void main(String... args) { System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]" }
تمرير صفائف من البدائيات
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3