当前位置: 代码迷 >> J2EE >> 请高手帮小弟我看一下
  详细解决方案

请高手帮小弟我看一下

热度:84   发布时间:2016-04-21 23:07:13.0
请高手帮我看一下
public class Test3 {

/**
 * @param args
 */
public void run(Object obj){
System.out.println("this is object");
}
public void run(String str){
System.out.println("this is string");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 test3=new Test3();
test3.run(null);

}

}


这个结果为什么打印的是 this is string

------解决方案--------------------
首先这个是重载造成的一种现象,而且null本身的不确定性更容易让人迷惑不解。其实这个是java重载的精确性问题,因为Object的范围显然较String大,所以从精确性来讲,String更符合当前的需要。
------解决方案--------------------
当null 符合 Object和String时
String 更精确,范围更小,更符合。

------解决方案--------------------
String extends Object
null can be String or Object
so use String 
------解决方案--------------------
可以参阅我写的一篇文章,希望对你有帮助
http://blog.csdn.net/chaijunkun/article/details/7660178
------解决方案--------------------
java重载按照最近原则进行调用
  相关解决方案