public class Numbers{
public Numbers(int num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
这段代码是错误的,但是
public class Numbers{
public Numbers(int... num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
却没错误,可以正确运行,难道int... num有什么特殊的地方么?
public Numbers(int num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
这段代码是错误的,但是
public class Numbers{
public Numbers(int... num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
却没错误,可以正确运行,难道int... num有什么特殊的地方么?
可变参数,你可以传任意多个int类型的参数, 不传都行。但是int num
要求你要传一个而且也只能传一个参数。
public class Numbers{
public Numbers(int num){
}
public static void main(String... args){
int a = 10;
Numbers n =new Numbers(a);
}
} that would be fine.
楼上正解,补充一下,可变参用于方法overloading时候是最后被考虑的
比如int a;
func(a);现在有(1)void func(int);
(2) void func(Integer);
(3) void func(int...);
则(1)被优先考虑,其次是(2),最后才(3)
例如
public void test(String ...args){...} 这里test方法可以传入参数的情况是:1.不使用参数,如test()2.使用一个或多个参数,如test("1"); test("1","2");3.使用数组 test(new String[]{"1","2"}); public class Numbers{
public Numbers(int num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
这个你没有提供一个 无参的构造方法,所以报错public class Numbers{
public Numbers(int... num){
}
public static void main(String... args){
Numbers n =new Numbers();
}
}
而这个相当于提供了一个无参的构造方法