2

次のコードは、Java で正常にコンパイルされます。

public static void main(String[] args) {
    int i =5;
    call(i);
}


static void call(int i){
    System.out.println("int");
}

static void call(long i){
    System.out.println("long");
}

static void call(Integer i){
    System.out.println("Integer");
}


static void call(Object i){
    System.out.println("Object");
}

ただし、次のコードではコンパイル時エラーが発生します。

public static void main(String[] args) {
    int i =5;
    call(i);
 }


static void call(int... i){
    System.out.println("int...");
}

static void call(long... i){
    System.out.println("long...");
}

static void call(Integer... i){
    System.out.println("Integer...");
}


static void call(Object... i){
    System.out.println("Object...");
}

var-args を使用しているときに、Java によって同様の呼び出しメカニズムが維持されないのはなぜですか? 2番目の例でも、呼び出しはメソッドに行く必要がありますstatic void call(int... i)

4

4 に答える 4

0

メソッドを Static void call(int... i) として宣言しているため、メソッドは int 配列を想定していますが、このメソッドを呼び出している間は整数値を 1 つだけ送信しています。

Static void call(int... i) is Same as Static void call(int[] i)
于 2013-04-30T05:37:17.667 に答える
-1

変数の引数は、Java では配列として扱われます。したがって、 int 値を渡す代わりに、 array のように渡します。たとえば。

int[] i ={5};
call(i);
于 2013-04-30T05:48:39.950 に答える