2

この宣言がコンパイル時にあいまいと見なされないのはなぜですか?

void f(int a) {
    System.out.println("int");
}
void f(int... a) {
    System.out.println("int...");
}

例えば:

f(2);     // to one parameter both method should match (f(int) runs)
f(2,2);   // f(int...)
4

2 に答える 2

3

scence var-args 宣言の背後では、コンパイラによって実際に配列に変換されていると思います。したがって、パラメーターとして var-args を使用するメソッドは、実際には次のようになります。

void f(int[] a) {
    System.out.println("int...");
}
于 2013-02-11T09:20:49.417 に答える
0
void f(int... a) {
System.out.println("int...");

}

上記のメソッドは 1 つ以上の値を受け入れることができ、メソッドは 1 つの引数のみを含みます。

void f(int a) {
System.out.println("int");

} は、1 つの値を受け入れることもできます。

于 2013-02-11T09:35:47.800 に答える