代码报错信息
The method test(A1) is ambiguous for the type AmbiguousTest |
源代码
class A1 {
}
interface B1 {
}
class C1 extends A1 implements B1 {
}
public class AmbiguousTest {
void test(A1 a) {
}
void test(B1 b) {
}
void mytest() {
C1 c1 = new C1();
// test(c1);// error
}
}
要调用一个方法,需要方法名+方法参数【类型,顺序,个数】用以定位该方法
此处调用方法名已经确定为test ,
而参数c1可以表示类型A1 也可以表示类型B1
ambiguous表示该调用有点歧义,导致系统不知道你想调用哪个方法。
解决方案 :将c1强转为A1或B1
void mytest() {
C1 c1 = new C1();
A1 a1 = (A1) c1;
test(a1);
}