日期:2014-05-18  浏览次数:20587 次

请高手帮我看一下
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重载按照最近原则进行调用