调用方法报错ambiguous

代码报错信息

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);
}





posted @ 2017-06-13 21:05  fluffy  阅读(378)  评论(1编辑  收藏  举报