المعلمات المتغيرة
المعلمات المتغيرة هي طريقة يمكن أن تتلقى أي عدد من المعلمات! على سبيل المثال: متعة () ، متعة (1) ، المرح (1،1) ، المرح (1،1،1). قد تعتقد أن هذا هو الحمل الزائد للأسلوب ، لكن هذا ليس حمولة زائدة. فكر في عدد الطرق التي يمكن أن يتم تحميلها الزائد عن طريق التحميل الزائد ، ويمكن للطريقة المرح () أن تمرر أي عدد من المعلمات. هل يمكنك زيادة الكثير من الطرق؟
2.1 تحديد طرق المعلمة المتغيرة
public voidfun (int ... arr) {}
نوع المعلمة للطريقة المذكورة أعلاه متعة () هو int ... ، حيث "..." ليس من القطع ، ولكن وسيلة لتحديد نوع المعلمة. المعلمة ARR هو نوع المعلمة متغير. يمكنك فهم الكود أعلاه على النحو التالي: متعة الفراغ العام (int [] arr).
public int sum1 (int [] arr) {int sum = 0 ؛ لـ (int i = 0 ؛ i <arr.length ؛ i ++) {sum+= arr [i] ؛ } إرجاع مجموع ؛ } public int sum2 (int ... arr) {int sum = 0 ؛ لـ (int i = 0 ؛ i <arr.length ؛ i ++) {sum+= arr [i] ؛ } إرجاع مجموع ؛ }قد تعتقد أن "int []" و "int ..." لا يختلفان ، ولكن "int ..." هو مجرد "int ..." هو وسيلة جديدة لتحديد معلمات الصفيف. ثم يجب أن أهنئك! هذا صحيح ، هذا صحيح! ولكن كن على دراية بأن int فقط ... يمكن استخدامها بدلاً من int [] في المعلمات الرسمية للطريقة.
2.2 طرق الاتصال مع المعلمات المتغيرة
مكالمات إلى الطريقتين SUM1 () و SUM2 ():
sum1 (new int [] {1،2،3}) ؛ sum2 (new int [] {1،2،3}) ؛ هذا لا يبدو الفرق! ولكن هناك طريقة أخرى للاتصال Sum2:
sum2 () ؛ sum2 (1) ؛ sum2 (1،2) ؛ sum2 (1،2،3) ؛
يبدو أن استخدام أي عدد من المعلمات لاستدعاء طريقة SUM2 () ، وهي فائدة استدعاء طريقة مع معلمات variadic.
2.3 مترجم "المعالجة الثانوية"
نتيجة "المعالجة الثانوية" لتعريف المترجم لطريقة SUM2 هي:
public int sum2 (int [] arr) {int sum = 0 ؛ لـ (int i = 0 ؛ i <arr.length ؛ i ++) {sum+= arr [i] ؛ } إرجاع مجموع ؛ }وهذا هو ، تعديل "int ..." إلى نوع "int []".
نتيجة التحميل التربيعية لدعوة المترجم إلى طريقة SUM2 هي:
sum2 (new int [0]) ؛ sum2 (new int [] {1}) ؛ sum2 (new int [] {1 ، 2}) ؛ sum2 (new int [] {1 ، 2 ، 3}) ؛ الخلاصة: المعلمات المتغيرة هي في الواقع أنواع صفيف ، لكنها أكثر ملاءمة عند استدعاء طرق. يساعدنا المترجم في وضع معلمات حقيقية متعددة في صفيف وتمريرها إلى معلمات رسمية.
2.4 قيود طرق المعلمة المتغيرة
لا يمكن أن تحتوي الطريقة على معلمة قابلة للتغيير واحدة فقط على الأكثر ؛
ل المعلمة المتغيرة يجب أن تكون المعلمة الأخيرة للطريقة.
ما سبق هو المحتوى الكامل للمناقشة المختصرة للمعلمات المتغيرة في Java التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا للجميع ودعم wulin.com أكثر ~