那个大虾能给我解释一下这道SCJP题?马上给分

foolpcman 2004-09-24 02:53:07
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);
}

}
答案是:My String
...全文
52 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xyxu1982 2004-09-24
  • 打赏
  • 举报
回复
flyforlove(为情飞)回答的好清楚,没有要补充的了。
flyforlove 2004-09-24
  • 打赏
  • 举报
回复
测试得知
null虽然不属于任何类的实例,但是在重载上,它可以匹配最底层子类,
也就是说,你的Test类中如果没有public void myMethod(String s) 方法它会
调用public void myMethod(Object o) 方法,

如果你把public void myMethod(String s) 方法替换成public void myMethod(Integer s),
null同样会匹配Integer

但是,如果你同时存在String 和 Integer 两种,会出现编辑错误,因为null会同时匹配String和Integer。
也就是说你的Test类中重载的方法的参数,不能有分支。只可以同时存在有祖先和子孙关系的类。

andy_zhang_ping 2004-09-24
  • 打赏
  • 举报
回复
Test t = new Test();
t.myMethod(null);
猜想: 第一个方法的参数是一个对象,而传递的却为空,那么就是参数没有指向对象!
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2004-09-24 02:53
社区公告
暂无公告