首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OverLoading : Ambigutiy参数是原语,而不是引用类型

OverLoading : Ambigutiy参数是原语,而不是引用类型
EN

Stack Overflow用户
提问于 2016-05-22 06:09:25
回答 1查看 96关注 0票数 2
代码语言:javascript
复制
public class Test {

public static void main(String[] args) throws ClassNotFoundException {


    new Test().f("dfffg");   // it is running perfectly
    new Test().f(1, 1);      // it is giving ambiguity
}

public void f(int a,long b){
    System.out.println("in int and long");
}

public void f(long a,int b){
    System.out.println("in long and int");
}

public void f(String s) {
    System.out.println("in String");

}


public void f(StringBuffer o) {
    System.out.println("in String bufer");

}

public void f(Object o){
    System.out.println("in object");
}
}

当我执行这个new Test().f("dfffg");时,它运行得很好,尽管我们有以StringBuffer和对象为参数的重载方法。

而f(1,1)给出歧义,我能理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-22 06:13:04

new Test().f("dfffg")匹配public void f(String s)public void f(Object o)的签名。在传递对象参数时,将选择具有最特定参数类型的方法:在本例中为public void f(String s)StringObject更具体,因为StringObject的子类。

在本例中,public void f(StringBuffer o)与此无关,因为StringBuffer不是String的超类,因此不能将String传递给需要StringBuffer的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37371148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档