Choose all the lines which if inserted independently instead of "//insert code here" will allow the following code to compile:
public class Test{
public static void main(String args[]){
add();
add(1);
add(1, 2);
}
// insert code here
}
public class Test{
public static void main(String args[]){
add();
add(1);
add(1, 2);
}
// insert code here
}
A. void add(Integer... args){}
B. static void add(int... args, int y){}
C. static void add(int args...){}
D. static void add(int[]... args){}
E. static void add(int...args){}
Answer: Option E
Solution(By Examveda Team)
var-args = variable number of arguments = 0 or manyvoid add(Integer... args){} is correct IF made "static" as it's called from a static context: main().
Var-args can be of both object(eg Integer) and primitive(eg int) types.
static void add(int... args, int y){} is correct IF its parameters' order is reversed.
If a method has both var-arg(0 or MAX 1) + non-var-args(0 or more) parameters then the var-arg parameter MUST come LAST!
static void add(int args...){} : "..." must come after the type of the var-arg parameter, not after its name
static void add(int[]... args){} : for this to be a correct declaration then add() should have been called something like this: "add(arr);" or "add(arr, arr);" where "arr" could be defined as "int[] arr = new int[5];"
static void add(int...args){} is a valid way to define var-args (there is no need to have any space between "..." and the type and name of the var-arg param)
Related Questions on Declaration and Access Control
What is the default access modifier for class members in Java if no access modifier is specified?
A. public
B. protected
C. private
D. package-private
A. private
B. public
C. protected
D. package-private
What keyword is used to declare a constant in Java, which is implicitly final and static?
A. final
B. const
C. static
D. constant
A. protected
B. private
C. public
D. default
Join The Discussion