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