to: hjcy_2002(hjcy)
麻烦解释一下"二义性"的准确概念

解决方案 »

  1.   

    这个问题嘛,当然是不能的,至于理由就是二义性,那么这样设计的二义性何在?我给你举个例子说明哦!例如:
    int a(){
    ......
    }
    double a(){}现在我这么调用函数int c = (int)a();
    你说编译器现在应该调用那个函数阿?
    用原理性的语言解释,就是说:在java中支持数据类型的相互转换,当掉用函数的时候,函数的返回值可以传送给任意可以传送的类型对像,也就是,当你掉用一个重载过的函数的时候,编译器并不知道你要调用的函数的返回值为什么类型。再上例中,就是这样,返回值为int的和double的两个函数,都能够被那样掉用哦!
      

  2.   

    赫赫,上面的例子这么掉用的话,可能根加明白哦:
    double c = a();
    编译器就更加不知道怎么掉用了1
      

  3.   

    Thinking in java 2ed上有这个问题的详细论述,还有这个问题,为什么不能用返回值加以区分。
      

  4.   

    不可以,当调用f()时
    可以
    f()
    也可以
    AA a=f()根本就可以不去处理它的返回值。