Java - Things to know before your OCJP exam - Var Args

1. Var Args argument should have data type followed by three dots.

     void method(int... x){}; // perfectly fine
     void method(int.. x){}; // two dots, compile time error

2. Three dots should be consecutive and not separated by even space.

     void method(int..    .x){}; // compile time error

3. We can have space before and after the dots. Java ignores the space before dealing with it.

     void method(int        ...x){}; // perfectly fine
     void method(int...        x){}; // perfectly fine
     void method(int    ...    x){}; // perfectly fine

4. If there is a var args in the method, it should be only one and the last one.

     void method(int x, int... y){}; // perfectly fine
     void method(int... x, int y){}; // compile time error
     void method(int... x,int... y){}; // compile time error

5. Method can be overloaded with a var args method like

     void method(int x ){};
     void method(int... x){};

In this case, first method will have a priority in case of conflict. method(1) will give a call to first method.

6. Internally Java treats var args as array. That is why Java doesn't allow overloaded method to have var args if there is already a method with an array of same type.

     void method(int... x){}; \\ compile time error: duplicate methods.
     void method(int[] x){};