私はJavaの初心者です。今日私は "Thinking in Java"のコードを見ましたが、コンパイル時にエラーが発生する理由を理解できません。可変引数でオーバーロードするとメソッドが曖昧になる
コード:
public class OverloadingVarargs2 {
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(Character... args) {
System.out.println("second");
}
public static void main(String[] args) {
f(1, 'a');
f('a', 'b');
}
}
コンパイルが訴え:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method f(float, Character[]) is ambiguous for the type OverloadingVarargs2