很有趣的问题,大家进来讨论一下

codehunters 2005-11-20 04:09:17

public class Test
{
public void myMethod(Object o)
{
System.out.println("My Object");
}

public void myMethod(String s)
{
System.out.println("My String");
}

public static void main(String args[])
{
Test t = new Test();
t.myMethod(null);
}

}


null is passed as an argument to the method myMethod(String s) will be called. Had myMethod(String s) not present , myMethod(Object o) would be called.


究竟调用函数匹配的顺序是什么有官方的解释吗?
...全文
161 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2005-11-20
  • 打赏
  • 举报
回复
可以在调用的时候
t.myMethod((Object)null);
这样子来强调null的"类型".
skycncomp 2005-11-20
  • 打赏
  • 举报
回复
我记得以前有过这个问题的讨论

你找找看

你要记得给分啊
seraphim119 2005-11-20
  • 打赏
  • 举报
回复
确实挺怪,不过我记得catch异常的时候是从内到外捕捉的,可能这个也是同理吧,String继承了Object,所以null更符合String,如果没有String就调用Object,是这样么?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧