次のコードは、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)