首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCJP问题:方法含糊

SCJP问题:方法含糊
EN

Stack Overflow用户
提问于 2010-03-07 17:03:39
回答 4查看 562关注 0票数 3

看看下面的代码:

代码语言:javascript
复制
public class Test {
public static void main(String... args) {
    flipFlop("hello", new Integer(4), 2004);
    // flipFlop("hello", 10, 2004); // this works!
}

private static void flipFlop(String str, int i, Integer iRef) {
    System.out.println(str + " (String, int, Integer)");
}

private static void flipFlop(String str, int i, int j) {
    System.out.println(str + " (String, int, int)");
}

}

编译器提供了一个错误,即调用是不明确的:

描述资源路径定位类型方法flipFlop(String,int,Integer)对于类型测试Test.java scjp19 - inheritence/src第3行scjp19问题不明确

但是,如果注释掉的行使用ti调用触发器,则方法将被明确地调用(第二个方法,因为自动装箱是在使用原语本身之后产生的)。

我希望编译器看到第二个参数将以一种或另一种方式取消装箱,并根据第三个参数判断必须调用哪种方法。为什么不发生这种事?理由何在?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-07 17:12:18

注释行与flipFlop(String str, int i, int j)完全匹配。另一行匹配是因为自动装箱。

票数 6
EN

Stack Overflow用户

发布于 2010-03-07 17:24:15

flipFlop("hello",new (4),2004年);与flipFlop不兼容(String,int,Integer iRef)

票数 1
EN

Stack Overflow用户

发布于 2010-03-07 17:44:23

Java 5和更高版本进行自动装箱(将Integer转换为int),从而得到结果。

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

https://stackoverflow.com/questions/2397071

复制
相关文章

相似问题

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