java - جافا ، 3 نقاط في المعلمات




variadic-functions (6)

أيضا لإلقاء بعض الضوء ، من المهم أن تعرف أن معلمات var-arg محددة بواحد ولا يمكن أن يكون لديك عدة بارامترات فنية. على سبيل المثال هذا هو illigal:

public void myMethod(String... strings, int ... ints){
// method body
}

ماذا تعني النقاط الثلاث في الطريقة التالية؟

public void myMethod(String... strings){
    // method body
}

تسمى هذه الميزة http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs ، وهي ميزة تم تقديمها في Java 5. وهو ما يعني أن هذه الوظيفة يمكن أن تستقبل العديد من الوسيطات:

myMethod("foo", "bar");
myMethod("foo", "bar", "baz");
myMethod(new String[]{"foo", "var", "baz"}); // you can even pass an array

بعد ذلك ، يمكنك استخدام String var كمصفوفة:

public void myMethod(String... strings){
    for(String whatever : strings){
        // do what ever you want
    }

    // the code above is is equivalent to
    for( int i = 0; i < strings.length; i++){
        // classical for. In this case you use strings[i]
    }
}

تقترض هذه الإجابة بشكل كبير من kiswa و Lorenzo ... وأيضاً من تعليق Graphain.


مجرد التفكير في الأمر ككلمة رئيسية في C # ، إذا كنت قادما من تلك الخلفية :)


هذه هي طريقة جافا لتمرير varargs (وسائط رقم متغير).

إذا كنت معتادًا على C ، فهذا يشبه ... بناء الجملة استخدمه الدالة printf :

int printf(const char * format, ...);

ولكن بطريقة آمنة: يجب أن تتوافق كل حجة مع النوع المحدد (في عينتك ، يجب أن تكون كل String ).

هذه عينة بسيطة من كيفية استخدام varargs :

class VarargSample {

   public static void PrintMultipleStrings(String... strings) {
      for( String s : strings ) {
          System.out.println(s);
      }
   }

   public static void main(String... args) {
      PrintMultipleStrings("Hello", "world");
   }
}

الوسيطة ... هي في الواقع مصفوفة ، لذلك يمكنك تمرير String[] كمعلمة.


يمكن القول ، إنه مثال للسكر النحوي ، لأنه يتم تنفيذه كمصفوفة على أي حال (وهذا لا يعني أنه عديم الفائدة) - أنا أفضل تمرير صفيف لإبقائه واضحًا ، كما نعلن الطرق باستخدام صفائف من نوع معين. بدلا من رأي من إجابة ، على الرغم من.


String... هي نفسها String[]

import java.lang.*;

        public class MyClassTest {

        //public static void main(String... args) { 

        public static void main(String[] args) {
        for(String str: args) {
        System.out.println(str);

        }
        }
        }






variadic-functions