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有什么特殊的地方么?

解决方案 »

  1.   

    int... num
    可变参数,你可以传任意多个int类型的参数, 不传都行。但是int num
    要求你要传一个而且也只能传一个参数。
      

  2.   


    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.
      

  3.   


    楼上正解,补充一下,可变参用于方法overloading时候是最后被考虑的
    比如int a;
    func(a);现在有(1)void func(int);
          (2) void func(Integer);
          (3) void func(int...);
     则(1)被优先考虑,其次是(2),最后才(3)
      

  4.   

    java 不定参数
    例如
    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();
    }

    而这个相当于提供了一个无参的构造方法